2023-12-02 17:40:52 +01:00
|
|
|
use uutils_args::{Arguments, Options};
|
2022-12-10 15:54:31 +01:00
|
|
|
|
2023-01-19 16:57:11 +01:00
|
|
|
#[derive(Arguments)]
|
|
|
|
|
#[arguments(file = "examples/hello_world_help.md")]
|
2022-12-10 15:54:31 +01:00
|
|
|
enum Arg {
|
2023-12-07 15:31:32 +01:00
|
|
|
/// The name to greet
|
2023-11-30 12:40:16 +01:00
|
|
|
#[arg("-n NAME", "--name=NAME", "name=NAME")]
|
2022-12-10 15:54:31 +01:00
|
|
|
Name(String),
|
|
|
|
|
|
2023-12-07 15:31:32 +01:00
|
|
|
/// The number of times to greet
|
2023-11-30 12:40:16 +01:00
|
|
|
#[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
|
2023-11-30 12:40:16 +01:00
|
|
|
#[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,
|
|
|
|
|
}
|
|
|
|
|
|
2023-02-15 14:51:16 +01:00
|
|
|
impl Options<Arg> for Settings {
|
2024-03-29 03:32:30 +01:00
|
|
|
fn apply(&mut self, arg: Arg) -> Result<(), uutils_args::Error> {
|
2023-01-19 16:57:11 +01:00
|
|
|
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(())
|
2023-01-19 16:57:11 +01:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2022-12-31 13:55:58 +01:00
|
|
|
fn main() -> Result<(), uutils_args::Error> {
|
2023-12-14 12:28:24 +01:00
|
|
|
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);
|
|
|
|
|
}
|
2022-12-31 13:55:58 +01:00
|
|
|
Ok(())
|
2022-12-10 15:54:31 +01:00
|
|
|
}
|