use clap::{Args, Parser, Subcommand};
use std::path::PathBuf;
#[derive(Parser)]
#[command(
version,
about = "Configuration backup and restore",
arg_required_else_help = true
)]
pub struct Cli {
#[command(subcommand)]
pub command: Commands,
}
#[derive(Subcommand)]
pub enum Commands {
Backup(FileArgs),
Restore(FileArgs),
Verify { config_file: PathBuf },
Hook {
#[command(flatten)]
config: ConfigArgs,
#[arg(short, long)]
name: Option<String>,
},
List { casks: Vec<String> },
Template,
Completions {
#[arg(value_enum)]
shell: clap_complete::Shell,
},
}
#[derive(Args)]
pub struct ConfigArgs {
pub config_file: PathBuf,
#[arg(short = 'q', long)]
pub quiet: bool,
}
#[derive(Args)]
pub struct FileArgs {
#[command(flatten)]
pub config: ConfigArgs,
#[arg(long)]
pub dry_run: bool,
}