use std::path::PathBuf;
use clap::{Parser, Subcommand};
#[derive(Parser)]
#[command(name = "complex-app")]
pub struct Cli {
name: Option<String>,
#[arg(short, long, value_name = "FILE", visible_alias = "configuration")]
config: Option<PathBuf>,
#[arg(long, default_value = "local")]
target: Target,
#[arg(long, visible_alias = "vv", visible_alias = "vvv")]
very_very_verbose: bool,
#[arg(short, long, action = clap::ArgAction::Count)]
debug: u8,
#[arg(short, long, hide = true)]
secret_arg: bool,
#[command(subcommand)]
command: Option<Commands>,
}
#[derive(Subcommand)]
enum Commands {
#[command(visible_alias = "tester")]
Test {
#[arg(short, long)]
list: bool,
},
OnlyHiddenOptions {
#[arg(short, long, hide = true)]
secret: bool,
},
}
#[derive(clap::ValueEnum)]
#[derive(Clone)]
enum Target {
Local,
Remote,
}