use clap::{Args, Parser, Subcommand};
#[derive(Parser, Debug, Clone)]
#[command(author, version, about, long_about)]
pub struct CLIArgs {
#[clap(flatten)]
pub global: GlobalArgs,
#[clap(subcommand)]
pub command: Subcommands,
}
#[derive(Args, Debug, Clone)]
pub struct GlobalArgs {
#[clap(short = 'P', long)]
pub engine_path: Option<String>,
}
#[derive(Subcommand, Debug, Clone)]
pub enum Subcommands {
Search {
#[arg(short, long)]
fen: String,
#[arg(short = 'm', long)]
show_moves: bool,
#[arg(short, long, default_value = "1")]
lines: usize,
#[arg(short = 'D', long, default_value = "0")]
max_depth: usize,
#[arg(short = 'T', long, default_value = "0")]
max_time: usize,
#[arg(short = 'M', long, default_value = "0")]
mate_in: usize,
#[arg(short = 'O', long = "option")]
options: Vec<String>,
},
ListOptions {},
}