use clap::Parser;
#[derive(Parser, Debug)]
#[command(author, version, about, long_about)]
struct Args {
#[arg(short, long)]
command: Option<String>,
script: Option<String>,
args: Vec<String>,
#[arg(short, long, default_value_t = false)]
skip_pcap: bool,
}
pub struct CliArgs {
args: Vec<String>,
cmd: Option<String>,
skip_pcap: bool,
}
impl CliArgs {
pub fn new() -> Self {
let cliargs = Args::parse();
let mut args = Vec::new();
if let Some(script) = cliargs.script.clone() {
args.push(script);
}
args.extend_from_slice(cliargs.args.as_slice());
Self {
args,
cmd: cliargs.command,
skip_pcap: cliargs.skip_pcap,
}
}
pub fn get_args(&self) -> &[String] {
self.args.as_slice()
}
pub fn get_cmd(&self) -> Option<String> {
self.cmd.clone()
}
pub fn skip_pcap(&self) -> bool {
self.skip_pcap
}
}