use clap::{Parser, Subcommand};
#[derive(Parser)]
#[command(name = "migu", version, about = "Cross-shell command history manager")]
pub struct Cli {
#[arg(short = 'n', long = "limit", default_value_t = 50, value_parser = clap::value_parser!(u64).range(1..=100))]
pub limit: u64,
#[arg(short = 'd', long = "database")]
pub database: Option<String>,
#[arg(long = "no-dedup")]
pub no_dedup: bool,
#[command(subcommand)]
pub command: Option<Commands>,
}
#[derive(Subcommand)]
pub enum Commands {
Add {
#[arg(trailing_var_arg = true, allow_hyphen_values = true, num_args = 1..)]
command: Vec<String>,
#[arg(long, default_value_t = String::new())]
cwd: String,
#[arg(long)]
exit_code: Option<i32>,
#[arg(long)]
hostname: Option<String>,
#[arg(long)]
shell: Option<String>,
#[arg(long)]
session_id: Option<String>,
},
Init {
#[arg(value_parser = ["bash", "zsh", "fish"])]
shell: String,
},
}