use clap::Subcommand;
use clap_verbosity_flag::Verbosity;
use clap::Parser;
#[derive(Parser, Debug)]
pub struct UpgradeCommand {
#[clap(long)]
pub version: Option<String>,
#[clap(short, long, default_value_t = false)]
pub yes: bool,
}
#[derive(Parser, Debug)]
pub struct EvalCommand {
#[clap(trailing_var_arg = true, allow_hyphen_values = true)]
pub commands: Vec<String>,
}
pub const DEFAULT_MASK_FORMAT: &str = "${{}:-REDACTED}";
#[derive(Parser, Debug)]
pub struct InjectCommand {
#[clap(long, default_value_t = false)]
pub no_mask: bool,
#[clap(long, default_value = DEFAULT_MASK_FORMAT)]
pub mask_format: String,
#[clap(trailing_var_arg = true, allow_hyphen_values = true)]
pub commands: Vec<String>,
}
#[derive(Subcommand, Debug)]
pub enum Command {
Upgrade(UpgradeCommand),
On,
Off,
Install,
Uninstall,
Inject(InjectCommand),
Set(EvalCommand),
Unset(EvalCommand),
Eval {
uri: String,
},
Hook,
User {
username: Option<String>,
#[arg(long)]
reset: bool,
},
}
#[derive(Parser, Debug)]
#[clap(name="lade", about, long_about = None, disable_version_flag = true, disable_help_flag = true)]
pub struct Args {
#[clap(long, value_parser)]
pub version: bool,
#[clap(short, long, value_parser)]
pub help: bool,
#[clap(subcommand)]
pub command: Option<Command>,
#[command(flatten)]
pub verbose: Verbosity,
}