use std::ffi::OsString;
argwerk::define! {
#[derive(Default)]
#[usage = "tour [-h]"]
struct Args {
help: bool,
#[required = "--file must be specified"]
file: String,
input: Option<String>,
limit: usize = 10,
positional: Option<(String, Option<String>)>,
raw: Option<OsString>,
rest: Vec<String>,
}
["-h" | "--help"] => {
println!("{}", Args::help());
help = true;
}
["--limit" | "-l", n] => {
limit = str::parse(&n)?;
}
["--file", path] if file.is_none() => {
file = Some(path);
}
["--input", #[option] path] => {
input = path;
}
["--raw", #[os] arg] => {
raw = Some(arg);
}
["--really-really-really-long-argument", _thing] => {
}
[first, #[option] second, #[rest] args] if positional.is_none() => {
positional = Some((first, second));
rest = args;
}
}
fn main() -> anyhow::Result<()> {
let args = Args::args()?;
dbg!(args);
Ok(())
}