use clap::{Parser, Subcommand};
#[derive(Parser)]
#[command(author, version, about, long_about = None)]
pub struct GimCli {
#[command(subcommand)]
pub command: Option<GimCommands>,
#[arg(short, long)]
pub title: Option<String>,
#[arg(short, long, default_value_t = false)]
pub auto_add: bool,
#[arg(short = 'p', long, default_value_t = false)]
pub overwrite: bool,
#[arg(short, long, default_value_t = false)]
pub verbose: bool,
#[arg(short, long, default_value_t = false)]
pub quiet: bool,
#[arg(long, default_value_t = false)]
pub dry: bool,
#[arg(long)]
pub diff_prompt: Option<String>,
#[arg(long)]
pub subject_prompt: Option<String>,
#[arg(short = 'n', long)]
pub max_files: Option<usize>,
}
#[derive(Subcommand)]
pub enum GimCommands {
Update {
#[arg(short, long, default_value_t = false)]
force: bool,
#[arg(long)]
max: Option<usize>,
#[arg(long)]
interval: Option<usize>,
},
Prompt {
#[arg(short, long)]
edit: bool,
#[arg(short = 't', long)]
prompt: Option<String>,
#[arg(short = 'o', long)]
editor: Option<String>,
#[arg(long, default_value_t = false)]
reset: bool,
},
Ai {
#[arg(short, long)]
model: Option<String>,
#[arg(short = 'k', long, num_args = 0..=1, default_missing_value = "")]
apikey: Option<String>,
#[arg(short, long)]
url: Option<String>,
#[arg(short, long)]
language: Option<String>,
},
Config {
#[arg(long)]
lines_limit: Option<usize>,
#[arg(long)]
max_files: Option<usize>,
#[arg(long, default_value_t = false)]
show_location: bool,
},
}