From c9e04ddb330ae521fa30b677bde0fe17acbf3aed Mon Sep 17 00:00:00 2001 From: RushLana Date: Fri, 16 May 2025 15:18:25 +0200 Subject: [PATCH] Basic arg handler See https://docs.rs/getopts/latest/getopts/ --- q-pilater/.gitignore | 1 + q-pilater/Cargo.lock | 25 +++++++++++++++++++++++++ q-pilater/Cargo.toml | 7 +++++++ q-pilater/src/main.rs | 29 +++++++++++++++++++++++++++++ 4 files changed, 62 insertions(+) create mode 100644 q-pilater/.gitignore create mode 100644 q-pilater/Cargo.lock create mode 100644 q-pilater/Cargo.toml create mode 100644 q-pilater/src/main.rs diff --git a/q-pilater/.gitignore b/q-pilater/.gitignore new file mode 100644 index 0000000..b83d222 --- /dev/null +++ b/q-pilater/.gitignore @@ -0,0 +1 @@ +/target/ diff --git a/q-pilater/Cargo.lock b/q-pilater/Cargo.lock new file mode 100644 index 0000000..fbd24ab --- /dev/null +++ b/q-pilater/Cargo.lock @@ -0,0 +1,25 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "getopts" +version = "0.2.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "14dbbfd5c71d70241ecf9e6f13737f7b5ce823821063188d7e46c41d371eebd5" +dependencies = [ + "unicode-width", +] + +[[package]] +name = "q-pilater" +version = "0.1.0" +dependencies = [ + "getopts", +] + +[[package]] +name = "unicode-width" +version = "0.1.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7dd6e30e90baa6f72411720665d41d89b9a3d039dc45b8faea1ddd07f617f6af" diff --git a/q-pilater/Cargo.toml b/q-pilater/Cargo.toml new file mode 100644 index 0000000..c3c9e6b --- /dev/null +++ b/q-pilater/Cargo.toml @@ -0,0 +1,7 @@ +[package] +name = "q-pilater" +version = "0.1.0" +edition = "2024" + +[dependencies] +getopts = "0.2" \ No newline at end of file diff --git a/q-pilater/src/main.rs b/q-pilater/src/main.rs new file mode 100644 index 0000000..9fb2d27 --- /dev/null +++ b/q-pilater/src/main.rs @@ -0,0 +1,29 @@ +extern crate getopts; +use getopts::Options; +use std::env; + +fn print_usage(program: &str, opts: Options) { + let brief = format!("Usage: {} FILE [options]", program); + print!("{}", opts.usage(&brief)); +} + +fn main() { + let args: Vec = env::args().collect(); + let program = args[0].clone(); + let mut opts = Options::new(); + + // List args + opts.optopt("i","","interpreter mode","DIRECTORY"); + opts.optflag("h", "help", "print this help menu"); + + // parse args + let matches = match opts.parse(&args[1..]) { + Ok(m) => { m } + Err(f) => { panic!("{}",f.to_string()) } + }; + + if matches.opt_present("h") { + print_usage(&program, opts); + return; + } +}