kiutils_kicad 0.3.0

Typed KiCad document model and codecs for seamless, lossless edit round-trips
Documentation
use std::env;
use std::path::PathBuf;

use kiutils_kicad::SchematicFile;

fn usage() -> String {
    "usage: schematic_roundtrip <input.kicad_sch> <output.kicad_sch>".to_string()
}

fn main() -> Result<(), String> {
    let mut args = env::args().skip(1);
    let in_path = args.next().map(PathBuf::from).ok_or_else(usage)?;
    let out_path = args.next().map(PathBuf::from).ok_or_else(usage)?;

    let mut doc = SchematicFile::read(&in_path).map_err(|e| e.to_string())?;
    doc.set_generator("kiutils")
        .set_generator_version("roundtrip-demo")
        .set_title("Edited by kiutils")
        .set_embedded_fonts(true);
    doc.write(&out_path).map_err(|e| e.to_string())?;

    let reread = SchematicFile::read(&out_path).map_err(|e| e.to_string())?;
    println!("input: {}", in_path.display());
    println!("output: {}", out_path.display());
    println!("version: {:?}", reread.ast().version);
    println!("wire_count: {}", reread.ast().wire_count);
    println!("symbol_count: {}", reread.ast().symbol_count);
    println!("unknown_nodes: {}", reread.ast().unknown_nodes.len());
    println!("diagnostics: {}", reread.diagnostics().len());

    Ok(())
}