footprint_roundtrip/
footprint_roundtrip.rs1use std::env;
2use std::path::PathBuf;
3
4use kiutils_kicad::FootprintFile;
5
6fn usage() -> String {
7 "usage: footprint_roundtrip <input.kicad_mod> <output.kicad_mod>".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 = FootprintFile::read(&in_path).map_err(|e| e.to_string())?;
16 doc.set_generator("kiutils")
17 .set_generator_version("roundtrip-demo")
18 .upsert_property("EditedBy", "kiutils_kicad/examples/footprint_roundtrip.rs");
19
20 doc.write(&out_path).map_err(|e| e.to_string())?;
21
22 let reread = FootprintFile::read(&out_path).map_err(|e| e.to_string())?;
23 println!("input: {}", in_path.display());
24 println!("output: {}", out_path.display());
25 println!("lib_id: {:?}", reread.ast().lib_id);
26 println!("properties: {}", reread.ast().property_count);
27 println!("unknown_nodes: {}", reread.ast().unknown_nodes.len());
28 println!("diagnostics: {}", reread.diagnostics().len());
29
30 Ok(())
31}