Files

48 lines
1000 B
Rust
Raw Permalink Normal View History

2023-12-02 17:40:52 +01:00
use uutils_args::{Arguments, Options};
2022-12-10 15:54:31 +01:00
#[derive(Arguments)]
#[arguments(file = "examples/hello_world_help.md")]
2022-12-10 15:54:31 +01:00
enum Arg {
/// The name to greet
#[arg("-n NAME", "--name=NAME", "name=NAME")]
2022-12-10 15:54:31 +01:00
Name(String),
/// The number of times to greet
#[arg("-c N", "--count=N")]
2022-12-10 15:54:31 +01:00
Count(u8),
2023-01-10 20:33:10 +01:00
/// This argument is hidden
#[arg("--hidden", hidden)]
2023-01-10 20:33:10 +01:00
Hidden,
2022-12-10 15:54:31 +01:00
}
struct Settings {
name: String,
count: u8,
}
impl Options<Arg> for Settings {
2024-03-29 03:32:30 +01:00
fn apply(&mut self, arg: Arg) -> Result<(), uutils_args::Error> {
match arg {
Arg::Name(n) => self.name = n,
Arg::Count(c) => self.count = c,
Arg::Hidden => {}
}
2024-03-29 03:32:30 +01:00
Ok(())
}
}
fn main() -> Result<(), uutils_args::Error> {
let (settings, _operands) = Settings {
2023-12-02 17:40:52 +01:00
name: String::new(),
count: 1,
}
2023-12-19 15:13:12 +01:00
.parse(std::env::args_os())
.unwrap();
2023-12-02 17:40:52 +01:00
2022-12-10 15:54:31 +01:00
for _ in 0..settings.count {
println!("Hello, {}!", settings.name);
}
Ok(())
2022-12-10 15:54:31 +01:00
}