//! A shadow of `starship.usage.kdl` in usage's vocabulary, generated by
//! `cargo run -p xtask -- gen-shadow`.
//!
//! Do not edit: regenerate it. It exists to be compiled and parsed against, so
//! that the parser can be measured at a real CLI's scale rather than a toy one.
#![allow(dead_code, unused_imports)]

use usage_derive::{Args, Cli, Subcommands, ValueEnum};

/// Create a pre-populated GitHub issue with information about your configuration
#[derive(Args)]
#[usage(unknown_flags = "error", args_override_self = false)]
pub struct BugReportArgs {}

/// Generate starship shell completions for your shell to stdout
#[derive(Args)]
#[usage(unknown_flags = "error", args_override_self = false)]
pub struct CompletionsArgs {
    #[usage(arg, name = "SHELL", value_enum)]
    pub shell: CompletionsShellValue,
}

#[derive(ValueEnum)]
pub enum CompletionsShellValue {
    #[usage(name = "bash")]
    Bash,
    #[usage(name = "elvish")]
    Elvish,
    #[usage(name = "fish")]
    Fish,
    #[usage(name = "nushell")]
    Nushell,
    #[usage(name = "powershell", alias = "pwsh", alias = "power-shell")]
    Powershell,
    #[usage(name = "zsh")]
    Zsh,
}

/// Edit the starship configuration
#[derive(Args)]
#[usage(unknown_flags = "error", args_override_self = false)]
pub struct ConfigArgs {
    /// Configuration key to edit
    #[usage(arg, name = "NAME")]
    pub name: ::std::option::Option<::std::string::String>,
    /// Value to place into that key
    #[usage(arg, name = "VALUE")]
    pub value: ::std::option::Option<::std::string::String>,
}

/// Explains the currently showing modules
#[derive(Args)]
#[usage(unknown_flags = "error", args_override_self = false)]
pub struct ExplainArgs {
    /// The status code of the previously run command as an unsigned or signed 32bit integer
    #[usage(long = "status", short = 's', value_name = "STATUS_CODE")]
    pub status: ::std::option::Option<::std::string::String>,
    /// Bash, Fish and Zsh support returning codes for each process in a pipeline
    #[usage(
        long = "pipestatus",
        delimiter = ' ',
        value_name = "PIPESTATUS",
        var,
        variadic
    )]
    pub pipestatus: ::std::vec::Vec<::std::string::String>,
    /// The width of the current interactive terminal
    #[usage(
        long = "terminal-width",
        short = 'w',
        value_name = "TERMINAL_WIDTH",
        default = "80"
    )]
    pub terminal_width: ::std::option::Option<::std::string::String>,
    /// The path that the prompt should render for
    #[usage(long = "path", short = 'p', value_name = "PATH")]
    pub path: ::std::option::Option<::std::string::String>,
    /// The logical path that the prompt should render for. This path should be a virtual/logical representation of the PATH argument
    #[usage(long = "logical-path", short = 'P', value_name = "LOGICAL_PATH")]
    pub logical_path: ::std::option::Option<::std::string::String>,
    /// The execution duration of the last command, in milliseconds
    #[usage(long = "cmd-duration", short = 'd', value_name = "CMD_DURATION")]
    pub cmd_duration: ::std::option::Option<::std::string::String>,
    /// The keymap of fish/zsh/cmd
    #[usage(long = "keymap", short = 'k', value_name = "KEYMAP", default = "viins")]
    pub keymap: ::std::option::Option<::std::string::String>,
    /// The number of currently running jobs
    #[usage(long = "jobs", short = 'j', value_name = "JOBS", default = "0")]
    pub jobs: ::std::option::Option<::std::string::String>,
    /// The current value of SHLVL, for shells that mis-handle it in $()
    #[usage(long = "shlvl", value_name = "SHLVL")]
    pub shlvl: ::std::option::Option<::std::string::String>,
}

/// Prints the shell function used to execute starship
#[derive(Args)]
#[usage(unknown_flags = "error", args_override_self = false)]
pub struct InitArgs {
    #[usage(long = "print-full-init")]
    pub print_full_init: bool,
    #[usage(arg, name = "SHELL")]
    pub shell: ::std::string::String,
}

/// Prints a specific prompt module
#[derive(Args)]
#[usage(unknown_flags = "error", args_override_self = false)]
pub struct ModuleArgs {
    /// List out all supported modules
    #[usage(long = "list", short = 'l')]
    pub list: bool,
    /// The status code of the previously run command as an unsigned or signed 32bit integer
    #[usage(long = "status", short = 's', value_name = "STATUS_CODE")]
    pub status: ::std::option::Option<::std::string::String>,
    /// Bash, Fish and Zsh support returning codes for each process in a pipeline
    #[usage(
        long = "pipestatus",
        delimiter = ' ',
        value_name = "PIPESTATUS",
        var,
        variadic
    )]
    pub pipestatus: ::std::vec::Vec<::std::string::String>,
    /// The width of the current interactive terminal
    #[usage(
        long = "terminal-width",
        short = 'w',
        value_name = "TERMINAL_WIDTH",
        default = "80"
    )]
    pub terminal_width: ::std::option::Option<::std::string::String>,
    /// The path that the prompt should render for
    #[usage(long = "path", short = 'p', value_name = "PATH")]
    pub path: ::std::option::Option<::std::string::String>,
    /// The logical path that the prompt should render for. This path should be a virtual/logical representation of the PATH argument
    #[usage(long = "logical-path", short = 'P', value_name = "LOGICAL_PATH")]
    pub logical_path: ::std::option::Option<::std::string::String>,
    /// The execution duration of the last command, in milliseconds
    #[usage(long = "cmd-duration", short = 'd', value_name = "CMD_DURATION")]
    pub cmd_duration: ::std::option::Option<::std::string::String>,
    /// The keymap of fish/zsh/cmd
    #[usage(long = "keymap", short = 'k', value_name = "KEYMAP", default = "viins")]
    pub keymap: ::std::option::Option<::std::string::String>,
    /// The number of currently running jobs
    #[usage(long = "jobs", short = 'j', value_name = "JOBS", default = "0")]
    pub jobs: ::std::option::Option<::std::string::String>,
    /// The current value of SHLVL, for shells that mis-handle it in $()
    #[usage(long = "shlvl", value_name = "SHLVL")]
    pub shlvl: ::std::option::Option<::std::string::String>,
    /// The name of the module to be printed
    #[usage(arg, name = "NAME")]
    pub name: ::std::option::Option<::std::string::String>,
}

/// Prints a preset config
#[derive(Args)]
#[usage(unknown_flags = "error", args_override_self = false)]
pub struct PresetArgs {
    /// Output the preset to a file instead of stdout
    #[usage(
        long = "output",
        short = 'o',
        conflicts = "--list",
        value_name = "OUTPUT"
    )]
    pub output: ::std::option::Option<::std::string::String>,
    /// Forcibly overwrite the output file if it already exists
    #[usage(long = "force", short = 'f')]
    pub force: bool,
    /// List out all preset names
    #[usage(long = "list", short = 'l')]
    pub list: bool,
    /// The name of preset to be printed
    #[usage(
        arg,
        name = "NAME",
        choices(
            "bracketed-segments",
            "catppuccin-powerline",
            "gruvbox-rainbow",
            "jetpack",
            "nerd-font-symbols",
            "no-empty-icons",
            "no-nerd-font",
            "no-runtime-versions",
            "pastel-powerline",
            "plain-text-symbols",
            "pure-preset",
            "tokyo-night"
        )
    )]
    pub name: ::std::option::Option<::std::string::String>,
}

/// Prints the computed starship configuration
#[derive(Args)]
#[usage(unknown_flags = "error", args_override_self = false)]
pub struct PrintConfigArgs {
    /// Print the default instead of the computed config
    #[usage(long = "default", short = 'd')]
    pub default: bool,
    /// Configuration keys to print
    #[usage(arg, name = "NAME", var_min = 1)]
    pub name: ::std::vec::Vec<::std::string::String>,
}

/// Prints the full starship prompt
#[derive(Args)]
#[usage(unknown_flags = "error", args_override_self = false)]
pub struct PromptArgs {
    /// Print the right prompt (instead of the standard left prompt)
    #[usage(long = "right")]
    pub right: bool,
    /// Print the prompt with the specified profile name (instead of the standard left prompt)
    #[usage(long = "profile", conflicts = "--right", value_name = "PROFILE")]
    pub profile: ::std::option::Option<::std::string::String>,
    /// Print the continuation prompt (instead of the standard left prompt)
    #[usage(long = "continuation", conflicts("--right", "--profile"))]
    pub continuation: bool,
    /// The status code of the previously run command as an unsigned or signed 32bit integer
    #[usage(long = "status", short = 's', value_name = "STATUS_CODE")]
    pub status: ::std::option::Option<::std::string::String>,
    /// Bash, Fish and Zsh support returning codes for each process in a pipeline
    #[usage(
        long = "pipestatus",
        delimiter = ' ',
        value_name = "PIPESTATUS",
        var,
        variadic
    )]
    pub pipestatus: ::std::vec::Vec<::std::string::String>,
    /// The width of the current interactive terminal
    #[usage(
        long = "terminal-width",
        short = 'w',
        value_name = "TERMINAL_WIDTH",
        default = "80"
    )]
    pub terminal_width: ::std::option::Option<::std::string::String>,
    /// The path that the prompt should render for
    #[usage(long = "path", short = 'p', value_name = "PATH")]
    pub path: ::std::option::Option<::std::string::String>,
    /// The logical path that the prompt should render for. This path should be a virtual/logical representation of the PATH argument
    #[usage(long = "logical-path", short = 'P', value_name = "LOGICAL_PATH")]
    pub logical_path: ::std::option::Option<::std::string::String>,
    /// The execution duration of the last command, in milliseconds
    #[usage(long = "cmd-duration", short = 'd', value_name = "CMD_DURATION")]
    pub cmd_duration: ::std::option::Option<::std::string::String>,
    /// The keymap of fish/zsh/cmd
    #[usage(long = "keymap", short = 'k', value_name = "KEYMAP", default = "viins")]
    pub keymap: ::std::option::Option<::std::string::String>,
    /// The number of currently running jobs
    #[usage(long = "jobs", short = 'j', value_name = "JOBS", default = "0")]
    pub jobs: ::std::option::Option<::std::string::String>,
    /// The current value of SHLVL, for shells that mis-handle it in $()
    #[usage(long = "shlvl", value_name = "SHLVL")]
    pub shlvl: ::std::option::Option<::std::string::String>,
}

/// Generate random session key
#[derive(Args)]
#[usage(unknown_flags = "error", args_override_self = false)]
pub struct SessionArgs {}

/// Prints the statusline with a specific profile
#[derive(Args)]
#[usage(unknown_flags = "error", args_override_self = false)]
pub struct StatuslineArgs {
    #[usage(long = "profile", value_name = "PROFILE")]
    pub profile: ::std::option::Option<::std::string::String>,
    /// The status code of the previously run command as an unsigned or signed 32bit integer
    #[usage(long = "status", short = 's', value_name = "STATUS_CODE")]
    pub status: ::std::option::Option<::std::string::String>,
    /// Bash, Fish and Zsh support returning codes for each process in a pipeline
    #[usage(
        long = "pipestatus",
        delimiter = ' ',
        value_name = "PIPESTATUS",
        var,
        variadic
    )]
    pub pipestatus: ::std::vec::Vec<::std::string::String>,
    /// The width of the current interactive terminal
    #[usage(
        long = "terminal-width",
        short = 'w',
        value_name = "TERMINAL_WIDTH",
        default = "80"
    )]
    pub terminal_width: ::std::option::Option<::std::string::String>,
    /// The path that the prompt should render for
    #[usage(long = "path", short = 'p', value_name = "PATH")]
    pub path: ::std::option::Option<::std::string::String>,
    /// The logical path that the prompt should render for. This path should be a virtual/logical representation of the PATH argument
    #[usage(long = "logical-path", short = 'P', value_name = "LOGICAL_PATH")]
    pub logical_path: ::std::option::Option<::std::string::String>,
    /// The execution duration of the last command, in milliseconds
    #[usage(long = "cmd-duration", short = 'd', value_name = "CMD_DURATION")]
    pub cmd_duration: ::std::option::Option<::std::string::String>,
    /// The keymap of fish/zsh/cmd
    #[usage(long = "keymap", short = 'k', value_name = "KEYMAP", default = "viins")]
    pub keymap: ::std::option::Option<::std::string::String>,
    /// The number of currently running jobs
    #[usage(long = "jobs", short = 'j', value_name = "JOBS", default = "0")]
    pub jobs: ::std::option::Option<::std::string::String>,
    /// The current value of SHLVL, for shells that mis-handle it in $()
    #[usage(long = "shlvl", value_name = "SHLVL")]
    pub shlvl: ::std::option::Option<::std::string::String>,
    /// The statusline provider to use
    #[usage(arg, name = "PROVIDER", value_enum)]
    pub provider: StatuslineProviderValue,
}

#[derive(ValueEnum)]
pub enum StatuslineProviderValue {
    #[usage(name = "claude-code", alias = "claude")]
    ClaudeCode,
}

/// Prints time in milliseconds
#[derive(Args)]
#[usage(unknown_flags = "error", args_override_self = false)]
pub struct TimeArgs {}

/// Prints timings of all active modules
#[derive(Args)]
#[usage(unknown_flags = "error", args_override_self = false)]
pub struct TimingsArgs {
    /// The status code of the previously run command as an unsigned or signed 32bit integer
    #[usage(long = "status", short = 's', value_name = "STATUS_CODE")]
    pub status: ::std::option::Option<::std::string::String>,
    /// Bash, Fish and Zsh support returning codes for each process in a pipeline
    #[usage(
        long = "pipestatus",
        delimiter = ' ',
        value_name = "PIPESTATUS",
        var,
        variadic
    )]
    pub pipestatus: ::std::vec::Vec<::std::string::String>,
    /// The width of the current interactive terminal
    #[usage(
        long = "terminal-width",
        short = 'w',
        value_name = "TERMINAL_WIDTH",
        default = "80"
    )]
    pub terminal_width: ::std::option::Option<::std::string::String>,
    /// The path that the prompt should render for
    #[usage(long = "path", short = 'p', value_name = "PATH")]
    pub path: ::std::option::Option<::std::string::String>,
    /// The logical path that the prompt should render for. This path should be a virtual/logical representation of the PATH argument
    #[usage(long = "logical-path", short = 'P', value_name = "LOGICAL_PATH")]
    pub logical_path: ::std::option::Option<::std::string::String>,
    /// The execution duration of the last command, in milliseconds
    #[usage(long = "cmd-duration", short = 'd', value_name = "CMD_DURATION")]
    pub cmd_duration: ::std::option::Option<::std::string::String>,
    /// The keymap of fish/zsh/cmd
    #[usage(long = "keymap", short = 'k', value_name = "KEYMAP", default = "viins")]
    pub keymap: ::std::option::Option<::std::string::String>,
    /// The number of currently running jobs
    #[usage(long = "jobs", short = 'j', value_name = "JOBS", default = "0")]
    pub jobs: ::std::option::Option<::std::string::String>,
    /// The current value of SHLVL, for shells that mis-handle it in $()
    #[usage(long = "shlvl", value_name = "SHLVL")]
    pub shlvl: ::std::option::Option<::std::string::String>,
}

/// Toggle a given starship module
#[derive(Args)]
#[usage(unknown_flags = "error", args_override_self = false)]
pub struct ToggleArgs {
    /// The name of the module to be toggled
    #[usage(arg, name = "NAME")]
    pub name: ::std::string::String,
    /// The key of the config to be toggled
    #[usage(arg, name = "VALUE", default = "disabled")]
    pub value: ::std::option::Option<::std::string::String>,
}

/// The cross-shell prompt for astronauts. ☄🌌️
#[derive(Cli)]
#[usage(
    bin = "starship",
    name = "starship",
    version = "1.26.0",
    unknown_flags = "error",
    args_override_self = false,
    arg_required_else_help = true
)]
pub struct Cli {
    #[usage(subcommand)]
    pub command: Commands,
}

#[derive(Subcommands)]
pub enum Commands {
    /// Create a pre-populated GitHub issue with information about your configuration
    #[usage(name = "bug-report")]
    BugReport(Box<BugReportArgs>),
    /// Generate starship shell completions for your shell to stdout
    #[usage(name = "completions")]
    Completions(Box<CompletionsArgs>),
    /// Edit the starship configuration
    #[usage(name = "config")]
    Config(Box<ConfigArgs>),
    /// Explains the currently showing modules
    #[usage(name = "explain")]
    Explain(Box<ExplainArgs>),
    /// Prints the shell function used to execute starship
    #[usage(name = "init")]
    Init(Box<InitArgs>),
    /// Prints a specific prompt module
    #[usage(name = "module")]
    Module(Box<ModuleArgs>),
    /// Prints a preset config
    #[usage(name = "preset")]
    Preset(Box<PresetArgs>),
    /// Prints the computed starship configuration
    #[usage(name = "print-config")]
    PrintConfig(Box<PrintConfigArgs>),
    /// Prints the full starship prompt
    #[usage(name = "prompt")]
    Prompt(Box<PromptArgs>),
    /// Generate random session key
    #[usage(name = "session")]
    Session(Box<SessionArgs>),
    /// Prints the statusline with a specific profile
    #[usage(name = "statusline")]
    Statusline(Box<StatuslineArgs>),
    /// Prints time in milliseconds
    #[usage(name = "time", hide)]
    Time(Box<TimeArgs>),
    /// Prints timings of all active modules
    #[usage(name = "timings")]
    Timings(Box<TimingsArgs>),
    /// Toggle a given starship module
    #[usage(name = "toggle")]
    Toggle(Box<ToggleArgs>),
}
