#[non_exhaustive]
pub enum Shell {
    Bash,
    Elvish,
    Fig,
    Fish,
    PowerShell,
    Zsh,
}
Expand description

A clap::ValueEnum for available shell completions.

Examples

Derive

use clap::{Parser, Subcommand};

#[derive(Parser)]
struct Cli {
    #[command(subcommand)]
    command: Commands,
}

#[derive(Subcommand)]
enum Commands {
    Completions {
        #[arg(value_enum)]
        shell: clap_complete_command::Shell,
    },
}

Builder

use clap::{Arg, Command};

fn build_cli() -> Command {
    Command::new(env!("CARGO_PKG_NAME"))
        .subcommand_required(true)
        .subcommand(
            Command::new("completions")
                .about("Generate shell completions")
                .arg(
                    Arg::new("shell")
                        .value_name("SHELL")
                        .help("The shell to generate the completions for")
                        .required(true)
                        .value_parser(
                            clap::builder::EnumValueParser::<clap_complete_command::Shell>::new(),
                        ),
                ),
        )
}

let matches = build_cli().get_matches();

match matches.subcommand() {
    Some(("completions", sub_matches)) => {
        if let Some(shell) = sub_matches.get_one::<clap_complete_command::Shell>("shell") {
            // ...
        }
    }
    _ => {
        unreachable!("Exhausted list of subcommands and `subcommand_required` prevents `None`")
    }
}

Variants (Non-exhaustive)

This enum is marked as non-exhaustive
Non-exhaustive enums could have additional variants added in future. Therefore, when matching against variants of non-exhaustive enums, an extra wildcard arm must be added to account for any future variants.

Bash

Bourne Again SHell (bash)

Elvish

Elvish shell

Fig

Fig

Fish

Friendly Interactive SHell (fish)

PowerShell

PowerShell

Zsh

Z SHell (zsh)

Implementations

See clap_complete::generate().

The command’s bin name is used as the completion’s bin name. If the command’s bin name is not set, it will be set to the command’s name.

See clap_complete::generate_to().

The command’s bin name is used as the completion’s bin name. If the command’s bin name is not set, it will be set to the command’s name.

Trait Implementations

Returns a copy of the value. Read more
Performs copy-assignment from source. Read more
Formats the value using the given formatter. Read more
Returns the file name that is created when this generator is called during compile time. Read more
Generates output out of clap::Command. Read more
All possible argument values, in display order.
The canonical argument value. Read more
Parse an argument into Self.

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more
Immutably borrows from an owned value. Read more
Mutably borrows from an owned value. Read more

Returns the argument unchanged.

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

The resulting type after obtaining ownership.
Creates owned data from borrowed data, usually by cloning. Read more
Uses borrowed data to replace owned data, usually by cloning. Read more
The type returned in the event of a conversion error.
Performs the conversion.
The type returned in the event of a conversion error.
Performs the conversion.