use clap::Parser;
#[derive(Parser, Debug)]
#[command(name = "apple-code")]
#[command(version, about = "Apple Code Assistant - Generate code using Apple Foundation Models")]
pub struct Args {
#[arg(short, long)]
pub prompt: Option<String>,
#[arg(short, long)]
pub language: Option<String>,
#[arg(short, long)]
pub output: Option<String>,
#[arg(short, long)]
pub interactive: bool,
#[arg(short, long)]
pub config: Option<String>,
#[arg(short, long)]
pub model: Option<String>,
#[arg(short = 'T', long)]
pub template: Option<String>,
#[arg(short, long, default_value = "0.7")]
pub temperature: f32,
#[arg(long, default_value = "4000")]
pub max_tokens: u32,
#[arg(long)]
pub char_limit: Option<usize>,
#[arg(short, long)]
pub save: bool,
#[arg(long)]
pub copy: bool,
#[arg(long)]
pub preview: bool,
#[arg(short, long)]
pub edit: Option<String>,
#[arg(long)]
pub context: Option<String>,
#[arg(long = "context-glob")]
pub context_glob: Vec<String>,
#[arg(long, default_value = "dark")]
pub theme: String,
#[arg(long)]
pub no_color: bool,
#[arg(long)]
pub verbose: bool,
#[arg(long)]
pub debug: bool,
#[arg(short = 'e', long)]
pub extend_conversation: bool,
#[arg(short = 'r', long)]
pub repeat_input: bool,
#[arg(long)]
pub tool_mode: bool,
#[command(subcommand)]
pub subcommand: Option<Subcommand>,
}
#[derive(clap::Subcommand, Debug)]
pub enum Subcommand {
Config {
#[arg(long)]
set: Option<String>,
#[arg(long)]
get: Option<String>,
#[arg(long)]
list: bool,
#[arg(long)]
reset: bool,
},
Models,
Languages,
Test,
}