You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

40 lines
1.6 KiB

use std::fs;
use serde_json::Value;
use std::io::Write;
fn main() -> std::io::Result<()> {
let json_string = fs::read_to_string("boards/coding.json")?;
let output_dir = "output";
fs::create_dir(output_dir)?;
let json_data: Value = serde_json::from_str(&json_string).unwrap();
let board_dir = format!("{}/{}", output_dir, json_data["name"].as_str().unwrap());
fs::create_dir(&board_dir)?;
if let Value::Array(lists) = &json_data["lists"]{
if let Value::Array(cards) = &json_data["cards"]{
for list in lists {
let list_dir = format!("{}/{}", board_dir, list["name"].as_str().unwrap());
fs::create_dir(&list_dir)?;
for card in cards {
if card["idList"] == list["id"]{
let file_path = format!("{}/{}.md", list_dir, card["name"].as_str().unwrap());
let mut file = fs::File::create(&file_path)?;
let header_text = format!("# {}\n\n", card["name"].as_str().unwrap());
file.write_all(header_text.as_bytes())?;
let checklists = json_data["checklists"].as_array().unwrap();
for checklist in checklists {
if checklist["idCard"] == card["id"]{
let checklist_title = format!("## {}\n\n", checklist["name"].as_str().unwrap());
file.write_all(checklist_title.as_bytes())?;
}
}
}
}
}
}
}
Ok(())
}