From bcfe76cde07c6b374e8dc219726720899f1fc0ae Mon Sep 17 00:00:00 2001 From: D4VID Date: Wed, 20 Aug 2025 19:57:50 +0200 Subject: [PATCH] Add command line arguments --- verilog2logicworld/Cargo.lock | 127 +++++++++++++++++++++++++++++++++ verilog2logicworld/Cargo.toml | 1 + verilog2logicworld/src/main.rs | 20 +++++- 3 files changed, 146 insertions(+), 2 deletions(-) diff --git a/verilog2logicworld/Cargo.lock b/verilog2logicworld/Cargo.lock index 8d6a2bf..6d153c2 100644 --- a/verilog2logicworld/Cargo.lock +++ b/verilog2logicworld/Cargo.lock @@ -2,6 +2,56 @@ # It is not intended for manual editing. version = 4 +[[package]] +name = "anstream" +version = "0.6.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3ae563653d1938f79b1ab1b5e668c87c76a9930414574a6583a7b7e11a8e6192" +dependencies = [ + "anstyle", + "anstyle-parse", + "anstyle-query", + "anstyle-wincon", + "colorchoice", + "is_terminal_polyfill", + "utf8parse", +] + +[[package]] +name = "anstyle" +version = "1.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "862ed96ca487e809f1c8e5a8447f6ee2cf102f846893800b20cebdf541fc6bbd" + +[[package]] +name = "anstyle-parse" +version = "0.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4e7644824f0aa2c7b9384579234ef10eb7efb6a0deb83f9630a49594dd9c15c2" +dependencies = [ + "utf8parse", +] + +[[package]] +name = "anstyle-query" +version = "1.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e231f6134f61b71076a3eab506c379d4f36122f2af15a9ff04415ea4c3339e2" +dependencies = [ + "windows-sys 0.60.2", +] + +[[package]] +name = "anstyle-wincon" +version = "3.0.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e0633414522a32ffaac8ac6cc8f748e090c5717661fddeea04219e2344f5f2a" +dependencies = [ + "anstyle", + "once_cell_polyfill", + "windows-sys 0.60.2", +] + [[package]] name = "binary-serialize-derive" version = "0.1.0" @@ -23,6 +73,52 @@ version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9555578bc9e57714c812a1f84e4fc5b4d21fcb063490c624de019f7464c91268" +[[package]] +name = "clap" +version = "4.5.45" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fc0e74a703892159f5ae7d3aac52c8e6c392f5ae5f359c70b5881d60aaac318" +dependencies = [ + "clap_builder", + "clap_derive", +] + +[[package]] +name = "clap_builder" +version = "4.5.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b3e7f4214277f3c7aa526a59dd3fbe306a370daee1f8b7b8c987069cd8e888a8" +dependencies = [ + "anstream", + "anstyle", + "clap_lex", + "strsim", +] + +[[package]] +name = "clap_derive" +version = "4.5.45" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "14cb31bb0a7d536caef2639baa7fad459e15c3144efefa6dbd1c84562c4739f6" +dependencies = [ + "heck", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "clap_lex" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b94f61472cee1439c0b966b47e3aca9ae07e45d070759512cd390ea2bebc6675" + +[[package]] +name = "colorchoice" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b05b61dc5112cbb17e4b6cd61790d9845d13888356391624cbe7e41efeac1e75" + [[package]] name = "errno" version = "0.3.13" @@ -51,6 +147,18 @@ dependencies = [ "wasi", ] +[[package]] +name = "heck" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" + +[[package]] +name = "is_terminal_polyfill" +version = "1.70.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf" + [[package]] name = "json" version = "0.12.4" @@ -91,6 +199,12 @@ version = "1.21.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" +[[package]] +name = "once_cell_polyfill" +version = "1.70.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4895175b425cb1f87721b59f0f286c2092bd4af812243672510e1ac53e2e0ad" + [[package]] name = "piston-float" version = "1.0.1" @@ -143,6 +257,12 @@ dependencies = [ "windows-sys 0.60.2", ] +[[package]] +name = "strsim" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" + [[package]] name = "syn" version = "2.0.106" @@ -173,6 +293,12 @@ version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512" +[[package]] +name = "utf8parse" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" + [[package]] name = "vecmath" version = "1.0.0" @@ -186,6 +312,7 @@ dependencies = [ name = "verilog2logicworld" version = "0.1.0" dependencies = [ + "clap", "json", "logicworld-subassembly", "quaternion", diff --git a/verilog2logicworld/Cargo.toml b/verilog2logicworld/Cargo.toml index afdcd39..fd8fe85 100644 --- a/verilog2logicworld/Cargo.toml +++ b/verilog2logicworld/Cargo.toml @@ -9,3 +9,4 @@ json = "0.12.4" quaternion = "2.0.0" tempfile = "3.20.0" vecmath = "1.0.0" +clap = { version = "4.5.45", features = ["derive"] } diff --git a/verilog2logicworld/src/main.rs b/verilog2logicworld/src/main.rs index 8c3bee7..ed7c79b 100644 --- a/verilog2logicworld/src/main.rs +++ b/verilog2logicworld/src/main.rs @@ -3,12 +3,28 @@ mod verilog; use std::path::Path; +use clap::Parser; use logicworld_subassembly::create_subassembly; use verilog::compile_module; use verilog::get_modules; +#[derive(Parser, Debug)] +#[command(version)] +struct Args { + /// Path to submodules directory inside LogicWorld + #[arg(short, long, default_value_t = String::from("output/"))] + output: String, + + /// Verilog files to compile + files: Vec, +} + + fn main() { - let files = ["gates.v"]; + let args = Args::parse(); + + let files: Vec<&str> = args.files.iter().map(|f| f.as_str()).collect(); + let result = get_modules(&files); println!("{:?}", result); @@ -39,7 +55,7 @@ fn main() { let result = create_subassembly( module_name, - &Path::new("output/"), + &Path::new(&args.output), &components, &wires, );