mirror of
https://github.com/clap-rs/clap
synced 2024-12-13 22:32:33 +00:00
3.6 KiB
3.6 KiB
clap_complete_nushell
Generates Nushell completions for clap
based CLIs
Examples
myapp.rs
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());
}
myapp.nu
module completions {
def "nu-complete myapp choice" [] {
[ "first" "second" ]
}
# Tests completions
export extern myapp [
file?: string # some input file
--config(-c) # some config file
--conf # some config file
-C # some config file
choice?: string@"nu-complete myapp choice"
--version(-V) # Print version information
]
# tests things
export extern "myapp test" [
--case: string # the case to test
--version(-V) # Print version information
]
# top level subcommand
export extern "myapp some_cmd" [
--version(-V) # Print version information
]
def "nu-complete myapp some_cmd sub_cmd config" [] {
[ "\"Lest quotes aren't escaped.\"" ]
}
# sub-subcommand
export extern "myapp some_cmd sub_cmd" [
--config: string@"nu-complete myapp some_cmd sub_cmd config" # the other case to test
--version(-V) # Print version information
]
}
use completions *