use clap::{builder::PossibleValue, Arg, ArgAction, Command, ValueHint}; use clap_complete::generate; use clap_complete_nushell::Nushell; use std::io; fn main() { let mut cmd = Command::new("myapp") .version("3.0") .propagate_version(true) .about("Tests completions") .arg( Arg::new("file") .value_hint(ValueHint::FilePath) .help("some input file"), ) .arg( Arg::new("config") .action(ArgAction::Count) .help("some config file") .short('c') .visible_short_alias('C') .long("config") .visible_alias("conf"), ) .arg(Arg::new("choice").value_parser(["first", "second"])) .subcommand( Command::new("test").about("tests things").arg( Arg::new("case") .long("case") .action(ArgAction::Set) .help("the case to test"), ), ) .subcommand( Command::new("some_cmd") .about("top level subcommand") .subcommand( Command::new("sub_cmd").about("sub-subcommand").arg( Arg::new("config") .long("config") .action(ArgAction::Set) .value_parser([PossibleValue::new("Lest quotes aren't escaped.")]) .help("the other case to test"), ), ), ); generate(Nushell, &mut cmd, "myapp", &mut io::stdout()); }