use clap::{Parser, ValueEnum};
#[derive(ValueEnum, Clone, Debug, PartialEq)]
pub enum CompletionShell {
Bash,
Elvish,
Fish,
PowerShell,
Zsh,
Nushell,
}
#[derive(Parser, Debug)]
#[command(
name = "retch",
version,
about = "A fast, feature-rich system information fetcher"
)]
pub struct Cli {
#[arg(short, long, value_enum, default_value = "long")]
pub mode: OutputMode,
#[arg(short, long)]
pub theme: Option<String>,
#[arg(short, long)]
pub config: Option<String>,
#[arg(long)]
pub no_logo: bool,
#[arg(long)]
pub ascii_only: bool,
#[arg(long)]
pub short: bool,
#[arg(long)]
pub long: bool,
#[arg(long)]
pub list_themes: bool,
#[arg(long)]
pub print_theme_template: bool,
#[arg(long)]
pub list_distros: bool,
#[arg(long)]
pub print_logos: bool,
#[arg(long)]
pub generate_config: bool,
#[arg(long, value_name = "PATH")]
pub write_config: Option<Option<String>>,
#[arg(long)]
pub merge_config: bool,
#[arg(long, value_delimiter = ',')]
pub fields: Option<Vec<String>>,
#[arg(long, value_enum)]
pub completions: Option<CompletionShell>,
}
#[derive(ValueEnum, Clone, Debug, PartialEq)]
pub enum OutputMode {
Short,
Long,
Custom,
}