Skip to main content

worksheet_roundtrip/
worksheet_roundtrip.rs

1use std::env;
2use std::path::PathBuf;
3
4use kiutils_kicad::WorksheetFile;
5
6fn usage() -> String {
7    "usage: worksheet_roundtrip <input.kicad_wks> <output.kicad_wks>".to_string()
8}
9
10fn main() -> Result<(), String> {
11    let mut args = env::args().skip(1);
12    let in_path = args.next().map(PathBuf::from).ok_or_else(usage)?;
13    let out_path = args.next().map(PathBuf::from).ok_or_else(usage)?;
14
15    let mut doc = WorksheetFile::read(&in_path).map_err(|e| e.to_string())?;
16    doc.set_version(20260101)
17        .set_generator("kiutils")
18        .set_generator_version("roundtrip-demo")
19        .set_setup_line_width(0.2);
20    doc.write(&out_path).map_err(|e| e.to_string())?;
21
22    let reread = WorksheetFile::read(&out_path).map_err(|e| e.to_string())?;
23    println!("input: {}", in_path.display());
24    println!("output: {}", out_path.display());
25    println!("line_count: {}", reread.ast().line_count);
26    println!("rect_count: {}", reread.ast().rect_count);
27    println!("tbtext_count: {}", reread.ast().tbtext_count);
28    println!("unknown_nodes: {}", reread.ast().unknown_nodes.len());
29    println!("diagnostics: {}", reread.diagnostics().len());
30
31    Ok(())
32}