use std::str::FromStr;
use clap::builder::TypedValueParser as _;
use clap::Parser;
use reqwest::Url;
#[derive(Parser, Debug, Clone)]
#[command(author,version, about, long_about = None)]
pub(crate) struct Dtrack {
#[arg(
short,
long,
value_name = "Url",
default_value = "http://127.0.0.1:8081"
)]
pub(crate) url: Option<Url>,
#[arg(
short,
long,
value_name = "Apikey",
default_value = "Oh9LHLfrLgk77e67DEZtiitOWZwvFVXI"
)]
pub(crate) key: Option<String>,
#[arg(
long,
value_name = "Proxy",
)]
pub(crate) proxy: Option<Url>,
#[arg(short, long, value_name = "Project Name", default_value = "test")]
pub(crate) project: Option<String>,
#[arg(short, long, value_name = "Project Version", default_value = "default")]
pub(crate) edition: Option<String>,
#[arg(short, long, value_name = "Bom File")]
pub(crate) file: Option<String>,
#[arg(short, long, value_name = "Rule")]
pub(crate) rule: Option<String>,
#[arg(short, long, default_value_t = false)]
pub(crate) dversion: bool,
#[arg(
short,
long,
value_name = "Scan Result",
default_value = "results.json"
)]
pub(crate) output: Option<String>,
#[arg(
short,
long,
default_value = "debug",
value_parser = clap::builder::PossibleValuesParser::new(["off", "debug", "info", "warn", "error"])
.map(|s| log::LevelFilter::from_str(&s).unwrap()),
)]
pub(crate) log_level: log::LevelFilter,
}