use std::env;
use ng_clp::{is_argument, next_index, parse, unwrap_argument};
fn main() -> anyhow::Result<()> {
let argv_store: Vec<String> = env::args().collect();
let argv: Vec<&str> = argv_store.iter().map(|item| item.as_ref()).collect();
if argv.len() == 1 {
println!("No arguments.");
return Ok(());
}
let mut argv_index = 1;
loop {
let pr = parse(&argv, argv_index)?;
let eat = match pr.0 {
"--" => { argv_index += 1; break;
}
a if is_argument(a) => { println!("Argument: {}", a);
1 }
fo => { if let Ok(a) = unwrap_argument(pr) {
println!("Option: {} {}", fo, a);
2 } else {
println!("Flag: {}", fo);
1 }
}
};
argv_index = next_index(&argv, argv_index, eat)?;
if argv_index >= argv.len() {
break;
}
}
if argv_index < argv.len() {
println!("remaining argv items = {}", argv[argv_index..].join(","));
}
Ok(())
}