use clap::Args;
use clap::ValueEnum;
use clap_complete::shells;

/// AUTO-GENERATED BY Kam/scripts/add_missing_docs.py: placeholder documentation for public enum 'ShellArg'. Replace with real documentation. (2025-12-30T22:23:21Z)
#[derive(ValueEnum, Clone, Debug)]
pub enum ShellArg {
    /// AUTO-GENERATED BY Kam/scripts/add_missing_docs.py: placeholder documentation for public enum variant 'Bash' in 'ShellArg'. Replace with real documentation. (2025-12-30T22:23:21Z)
    Bash,
    /// AUTO-GENERATED BY Kam/scripts/add_missing_docs.py: placeholder documentation for public enum variant 'Zsh' in 'ShellArg'. Replace with real documentation. (2025-12-30T22:23:21Z)
    Zsh,
    /// AUTO-GENERATED BY Kam/scripts/add_missing_docs.py: placeholder documentation for public enum variant 'Fish' in 'ShellArg'. Replace with real documentation. (2025-12-30T22:23:21Z)
    Fish,
    /// AUTO-GENERATED BY Kam/scripts/add_missing_docs.py: placeholder documentation for public enum variant 'PowerShell' in 'ShellArg'. Replace with real documentation. (2025-12-30T22:23:21Z)
    PowerShell,
    /// AUTO-GENERATED BY Kam/scripts/add_missing_docs.py: placeholder documentation for public enum variant 'Elvish' in 'ShellArg'. Replace with real documentation. (2025-12-30T22:23:21Z)
    Elvish,
}

impl ShellArg {
    /// AUTO-GENERATED BY Kam/scripts/add_missing_docs.py: placeholder documentation for public const 'fn'. Replace with real documentation. (2025-12-30T22:23:21Z)
    #[must_use]
    pub const fn to_shell(&self) -> shells::Shell {
        match self {
            Self::Bash => shells::Shell::Bash,
            Self::Zsh => shells::Shell::Zsh,
            Self::Fish => shells::Shell::Fish,
            Self::PowerShell => shells::Shell::PowerShell,
            Self::Elvish => shells::Shell::Elvish,
        }
    }
}

/// AUTO-GENERATED BY Kam/scripts/add_missing_docs.py: placeholder documentation for public struct 'CompletionArgs'. Replace with real documentation. (2025-12-30T22:23:21Z)
#[derive(Args, Debug)]
pub struct CompletionArgs {
    /// Shell type for completion (bash,zsh,fish,powershell,elvish)
    #[arg(value_enum)]
    pub shell: ShellArg,

    /// Output file. If omitted, prints to STDOUT.
    #[arg(short, long)]
    pub out: Option<String>,

    /// Install the generated completion into the standard shell completion directory.
    /// When set, kam will attempt to write the generated completion into the
    /// system- or user-level completion directory appropriate for the chosen shell.
    #[arg(long = "install")]
    pub install: bool,
}
