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>,
}
#[derive(Subcommand, Debug)]
pub enum Command {
Upgrade(UpgradeCommand),
On,
Off,
Install,
Uninstall,
Inject(EvalCommand),
Set(EvalCommand),
Unset(EvalCommand),
}
#[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,
}