Files
uutils-args/examples/hello_world.rs
T
2023-12-05 16:05:59 +01:00

50 lines
1.0 KiB
Rust

use uutils_args::{Arguments, Options};
#[derive(Arguments)]
#[arguments(file = "examples/hello_world_help.md")]
enum Arg {
/// The *name* to **greet**
///
/// Just to show off, I can do multiple paragraphs and wrap text!
///
/// # Also headings!
#[arg("-n NAME", "--name=NAME", "name=NAME")]
Name(String),
/// The **number of times** to `greet`
#[arg("-c N", "--count=N")]
Count(u8),
/// This argument is hidden
#[arg("--hidden", hidden)]
Hidden,
}
struct Settings {
name: String,
count: u8,
}
impl Options<Arg> for Settings {
fn apply(&mut self, arg: Arg) {
match arg {
Arg::Name(n) => self.name = n,
Arg::Count(c) => self.count = c,
Arg::Hidden => {}
}
}
}
fn main() -> Result<(), uutils_args::Error> {
let settings = Settings {
name: String::new(),
count: 1,
}
.parse(std::env::args_os());
for _ in 0..settings.count {
println!("Hello, {}!", settings.name);
}
Ok(())
}