diff --git a/Cargo.toml b/Cargo.toml index 88d9216..0d05785 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -7,6 +7,10 @@ default-run = "topola-egui" [lib] name = "topola" +[[bin]] +name = "topola-cli" +required-features = ["cli"] + [[bin]] name = "topola-egui" required-features = ["egui"] @@ -16,6 +20,7 @@ name = "topola-sdl2-demo" required-features = ["sdl2"] [features] +cli = ["dep:clap"] egui = ["dep:eframe", "dep:egui", "dep:rfd", "dep:futures"] sdl2 = ["dep:sdl2", "dep:gl", "dep:pathfinder_canvas", "dep:pathfinder_geometry", "dep:pathfinder_gl", "dep:pathfinder_renderer", "dep:pathfinder_resources"] disable_contracts = ["contracts/disable_contracts"] @@ -45,6 +50,11 @@ features = ["use-serde"] version = "1" features = ["derive"] +[dependencies.clap] +optional = true +version = "4.5.8" +features = ["derive"] + [dependencies.eframe] optional = true version = "0.26.0" diff --git a/dist/.stage/favicon-bb479c4c9d076525.ico b/dist/.stage/favicon-bb479c4c9d076525.ico new file mode 100644 index 0000000..66ab34e Binary files /dev/null and b/dist/.stage/favicon-bb479c4c9d076525.ico differ diff --git a/src/bin/topola-cli/main.rs b/src/bin/topola-cli/main.rs new file mode 100644 index 0000000..73efe54 --- /dev/null +++ b/src/bin/topola-cli/main.rs @@ -0,0 +1,39 @@ +use std::fs::File; +use std::io::BufReader; +use std::io::prelude::*; +use clap::{Parser, Error}; + +#[derive(Parser)] +struct Cli { + input: std::path::PathBuf, + output: std::path::PathBuf, + history: Option, +} + +fn main() -> Result<(), std::io::Error> { + + let args = Cli::parse(); + + let design_file = File::open(args.input)?; + let mut design_bufread = BufReader::new(design_file); + + let design = topola::specctra::design::SpecctraDesign::load(design_bufread).unwrap(); + let board = design.make_board(); + + if let Some(history) = args.history { + let history_file = File::open(history)?; + let mut history_bufread = BufReader::new(history_file); + let mut invoker = topola::autorouter::invoker::Invoker::new( + topola::autorouter::Autorouter::new(board).unwrap()); + invoker.replay(serde_json::from_reader(history_bufread).unwrap()) + } + + Ok(()) + // let content = std::fs::read_to_string(&args.input).expect("could not read file"); + + // for line in content.lines() { + // if line.contains(&args.pattern) { + // println!("{}", line); + // } + // } +} \ No newline at end of file