#![allow(dead_code)]
use std::ffi::OsString;
#[derive(Debug)]
struct Args {
forwarded_args: Vec<OsString>,
help: bool,
}
fn parse_args() -> Result<Args, pico_args::Error> {
let mut args: Vec<_> = std::env::args_os().collect();
args.remove(0); let forwarded_args = if let Some(dash_dash) = args.iter().position(|arg| arg == "--") {
let later_args = args.drain(dash_dash+1..).collect();
args.pop();
later_args
} else {
Vec::new()
};
let mut args = pico_args::Arguments::from_vec(args);
let res = Args {
forwarded_args,
help: args.contains(["-h", "--help"]),
};
let remaining = args.finish();
if !remaining.is_empty() {
eprintln!("Warning: unused arguments left: {:?}", remaining);
}
Ok(res)
}
fn main() {
match parse_args() {
Ok(args) => println!("{:#?}", args),
Err(err) => eprintln!("{}", err),
}
}