mirror of
https://github.com/clap-rs/clap
synced 2024-12-14 14:52:33 +00:00
test(complete): Allow E2E dynamic completion tests
This commit is contained in:
parent
dac33b686b
commit
9a6208c795
10 changed files with 150 additions and 27 deletions
|
@ -1,3 +1,5 @@
|
||||||
|
#[cfg(feature = "unstable-dynamic")]
|
||||||
|
use clap::{FromArgMatches, Subcommand};
|
||||||
use clap_complete::{generate, Generator, Shell};
|
use clap_complete::{generate, Generator, Shell};
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
|
@ -6,9 +8,18 @@ fn main() {
|
||||||
let mut cmd = cli();
|
let mut cmd = cli();
|
||||||
eprintln!("Generating completion file for {generator}...");
|
eprintln!("Generating completion file for {generator}...");
|
||||||
print_completions(*generator, &mut cmd);
|
print_completions(*generator, &mut cmd);
|
||||||
} else {
|
return;
|
||||||
println!("{:?}", matches);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[cfg(feature = "unstable-dynamic")]
|
||||||
|
if let Ok(completions) =
|
||||||
|
clap_complete::dynamic::shells::CompleteCommand::from_arg_matches(&matches)
|
||||||
|
{
|
||||||
|
completions.complete(&mut cli());
|
||||||
|
return;
|
||||||
|
};
|
||||||
|
|
||||||
|
println!("{:?}", matches);
|
||||||
}
|
}
|
||||||
|
|
||||||
fn print_completions<G: Generator>(gen: G, cmd: &mut clap::Command) {
|
fn print_completions<G: Generator>(gen: G, cmd: &mut clap::Command) {
|
||||||
|
@ -16,7 +27,7 @@ fn print_completions<G: Generator>(gen: G, cmd: &mut clap::Command) {
|
||||||
}
|
}
|
||||||
|
|
||||||
fn cli() -> clap::Command {
|
fn cli() -> clap::Command {
|
||||||
clap::Command::new("test")
|
let cli = clap::Command::new("test")
|
||||||
.version("3.0")
|
.version("3.0")
|
||||||
.propagate_version(true)
|
.propagate_version(true)
|
||||||
.args([
|
.args([
|
||||||
|
@ -27,6 +38,7 @@ fn cli() -> clap::Command {
|
||||||
.help("everywhere"),
|
.help("everywhere"),
|
||||||
clap::Arg::new("generate")
|
clap::Arg::new("generate")
|
||||||
.long("generate")
|
.long("generate")
|
||||||
|
.value_name("SHELL")
|
||||||
.value_parser(clap::value_parser!(Shell))
|
.value_parser(clap::value_parser!(Shell))
|
||||||
.help("generate"),
|
.help("generate"),
|
||||||
])
|
])
|
||||||
|
@ -173,5 +185,8 @@ fn cli() -> clap::Command {
|
||||||
.long("email")
|
.long("email")
|
||||||
.value_hint(clap::ValueHint::EmailAddress),
|
.value_hint(clap::ValueHint::EmailAddress),
|
||||||
]),
|
]),
|
||||||
])
|
]);
|
||||||
|
#[cfg(feature = "unstable-dynamic")]
|
||||||
|
let cli = clap_complete::dynamic::shells::CompleteCommand::augment_subcommands(cli);
|
||||||
|
cli
|
||||||
}
|
}
|
||||||
|
|
|
@ -20,6 +20,9 @@ _test() {
|
||||||
test,alias)
|
test,alias)
|
||||||
cmd="test__alias"
|
cmd="test__alias"
|
||||||
;;
|
;;
|
||||||
|
test,complete)
|
||||||
|
cmd="test__complete"
|
||||||
|
;;
|
||||||
test,help)
|
test,help)
|
||||||
cmd="test__help"
|
cmd="test__help"
|
||||||
;;
|
;;
|
||||||
|
@ -44,6 +47,9 @@ _test() {
|
||||||
test__help,alias)
|
test__help,alias)
|
||||||
cmd="test__help__alias"
|
cmd="test__help__alias"
|
||||||
;;
|
;;
|
||||||
|
test__help,complete)
|
||||||
|
cmd="test__help__complete"
|
||||||
|
;;
|
||||||
test__help,help)
|
test__help,help)
|
||||||
cmd="test__help__help"
|
cmd="test__help__help"
|
||||||
;;
|
;;
|
||||||
|
@ -153,7 +159,7 @@ _test() {
|
||||||
|
|
||||||
case "${cmd}" in
|
case "${cmd}" in
|
||||||
test)
|
test)
|
||||||
opts="-h -V --global --generate --help --version action quote value pacman last alias hint help"
|
opts="-h -V --global --generate --help --version action quote value pacman last alias hint complete help"
|
||||||
if [[ ${cur} == -* || ${COMP_CWORD} -eq 1 ]] ; then
|
if [[ ${cur} == -* || ${COMP_CWORD} -eq 1 ]] ; then
|
||||||
COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
|
COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
|
||||||
return 0
|
return 0
|
||||||
|
@ -222,8 +228,30 @@ _test() {
|
||||||
COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
|
COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
|
||||||
return 0
|
return 0
|
||||||
;;
|
;;
|
||||||
|
test__complete)
|
||||||
|
opts="-h -V --shell --register --global --help --version [COMP_WORDS]..."
|
||||||
|
if [[ ${cur} == -* || ${COMP_CWORD} -eq 2 ]] ; then
|
||||||
|
COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
case "${prev}" in
|
||||||
|
--shell)
|
||||||
|
COMPREPLY=($(compgen -W "bash" -- "${cur}"))
|
||||||
|
return 0
|
||||||
|
;;
|
||||||
|
--register)
|
||||||
|
COMPREPLY=($(compgen -f "${cur}"))
|
||||||
|
return 0
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
COMPREPLY=()
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
|
||||||
|
return 0
|
||||||
|
;;
|
||||||
test__help)
|
test__help)
|
||||||
opts="action quote value pacman last alias hint help"
|
opts="action quote value pacman last alias hint complete help"
|
||||||
if [[ ${cur} == -* || ${COMP_CWORD} -eq 2 ]] ; then
|
if [[ ${cur} == -* || ${COMP_CWORD} -eq 2 ]] ; then
|
||||||
COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
|
COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
|
||||||
return 0
|
return 0
|
||||||
|
@ -264,6 +292,20 @@ _test() {
|
||||||
COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
|
COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
|
||||||
return 0
|
return 0
|
||||||
;;
|
;;
|
||||||
|
test__help__complete)
|
||||||
|
opts=""
|
||||||
|
if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then
|
||||||
|
COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
case "${prev}" in
|
||||||
|
*)
|
||||||
|
COMPREPLY=()
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
|
||||||
|
return 0
|
||||||
|
;;
|
||||||
test__help__help)
|
test__help__help)
|
||||||
opts=""
|
opts=""
|
||||||
if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then
|
if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then
|
||||||
|
|
|
@ -33,6 +33,7 @@ set edit:completion:arg-completer[test] = {|@words|
|
||||||
cand last 'last'
|
cand last 'last'
|
||||||
cand alias 'alias'
|
cand alias 'alias'
|
||||||
cand hint 'hint'
|
cand hint 'hint'
|
||||||
|
cand complete 'Register shell completions for this program'
|
||||||
cand help 'Print this message or the help of the given subcommand(s)'
|
cand help 'Print this message or the help of the given subcommand(s)'
|
||||||
}
|
}
|
||||||
&'test;action'= {
|
&'test;action'= {
|
||||||
|
@ -225,6 +226,15 @@ set edit:completion:arg-completer[test] = {|@words|
|
||||||
cand -V 'Print version'
|
cand -V 'Print version'
|
||||||
cand --version 'Print version'
|
cand --version 'Print version'
|
||||||
}
|
}
|
||||||
|
&'test;complete'= {
|
||||||
|
cand --shell 'Specify shell to complete for'
|
||||||
|
cand --register 'Path to write completion-registration to'
|
||||||
|
cand --global 'everywhere'
|
||||||
|
cand -h 'Print help (see more with ''--help'')'
|
||||||
|
cand --help 'Print help (see more with ''--help'')'
|
||||||
|
cand -V 'Print version'
|
||||||
|
cand --version 'Print version'
|
||||||
|
}
|
||||||
&'test;help'= {
|
&'test;help'= {
|
||||||
cand action 'action'
|
cand action 'action'
|
||||||
cand quote 'quote'
|
cand quote 'quote'
|
||||||
|
@ -233,6 +243,7 @@ set edit:completion:arg-completer[test] = {|@words|
|
||||||
cand last 'last'
|
cand last 'last'
|
||||||
cand alias 'alias'
|
cand alias 'alias'
|
||||||
cand hint 'hint'
|
cand hint 'hint'
|
||||||
|
cand complete 'Register shell completions for this program'
|
||||||
cand help 'Print this message or the help of the given subcommand(s)'
|
cand help 'Print this message or the help of the given subcommand(s)'
|
||||||
}
|
}
|
||||||
&'test;help;action'= {
|
&'test;help;action'= {
|
||||||
|
@ -273,6 +284,8 @@ set edit:completion:arg-completer[test] = {|@words|
|
||||||
}
|
}
|
||||||
&'test;help;hint'= {
|
&'test;help;hint'= {
|
||||||
}
|
}
|
||||||
|
&'test;help;complete'= {
|
||||||
|
}
|
||||||
&'test;help;help'= {
|
&'test;help;help'= {
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|
|
@ -9,6 +9,7 @@ complete -c test -n "__fish_use_subcommand" -f -a "pacman"
|
||||||
complete -c test -n "__fish_use_subcommand" -f -a "last"
|
complete -c test -n "__fish_use_subcommand" -f -a "last"
|
||||||
complete -c test -n "__fish_use_subcommand" -f -a "alias"
|
complete -c test -n "__fish_use_subcommand" -f -a "alias"
|
||||||
complete -c test -n "__fish_use_subcommand" -f -a "hint"
|
complete -c test -n "__fish_use_subcommand" -f -a "hint"
|
||||||
|
complete -c test -n "__fish_use_subcommand" -f -a "complete" -d 'Register shell completions for this program'
|
||||||
complete -c test -n "__fish_use_subcommand" -f -a "help" -d 'Print this message or the help of the given subcommand(s)'
|
complete -c test -n "__fish_use_subcommand" -f -a "help" -d 'Print this message or the help of the given subcommand(s)'
|
||||||
complete -c test -n "__fish_seen_subcommand_from action" -l set -d 'value' -r
|
complete -c test -n "__fish_seen_subcommand_from action" -l set -d 'value' -r
|
||||||
complete -c test -n "__fish_seen_subcommand_from action" -l choice -d 'enum' -r -f -a "{first ,second }"
|
complete -c test -n "__fish_seen_subcommand_from action" -l choice -d 'enum' -r -f -a "{first ,second }"
|
||||||
|
@ -103,14 +104,20 @@ complete -c test -n "__fish_seen_subcommand_from hint" -l email -r -f
|
||||||
complete -c test -n "__fish_seen_subcommand_from hint" -l global -d 'everywhere'
|
complete -c test -n "__fish_seen_subcommand_from hint" -l global -d 'everywhere'
|
||||||
complete -c test -n "__fish_seen_subcommand_from hint" -s h -l help -d 'Print help'
|
complete -c test -n "__fish_seen_subcommand_from hint" -s h -l help -d 'Print help'
|
||||||
complete -c test -n "__fish_seen_subcommand_from hint" -s V -l version -d 'Print version'
|
complete -c test -n "__fish_seen_subcommand_from hint" -s V -l version -d 'Print version'
|
||||||
complete -c test -n "__fish_seen_subcommand_from help; and not __fish_seen_subcommand_from action; and not __fish_seen_subcommand_from quote; and not __fish_seen_subcommand_from value; and not __fish_seen_subcommand_from pacman; and not __fish_seen_subcommand_from last; and not __fish_seen_subcommand_from alias; and not __fish_seen_subcommand_from hint; and not __fish_seen_subcommand_from help" -f -a "action"
|
complete -c test -n "__fish_seen_subcommand_from complete" -l shell -d 'Specify shell to complete for' -r -f -a "{bash }"
|
||||||
complete -c test -n "__fish_seen_subcommand_from help; and not __fish_seen_subcommand_from action; and not __fish_seen_subcommand_from quote; and not __fish_seen_subcommand_from value; and not __fish_seen_subcommand_from pacman; and not __fish_seen_subcommand_from last; and not __fish_seen_subcommand_from alias; and not __fish_seen_subcommand_from hint; and not __fish_seen_subcommand_from help" -f -a "quote"
|
complete -c test -n "__fish_seen_subcommand_from complete" -l register -d 'Path to write completion-registration to' -r -F
|
||||||
complete -c test -n "__fish_seen_subcommand_from help; and not __fish_seen_subcommand_from action; and not __fish_seen_subcommand_from quote; and not __fish_seen_subcommand_from value; and not __fish_seen_subcommand_from pacman; and not __fish_seen_subcommand_from last; and not __fish_seen_subcommand_from alias; and not __fish_seen_subcommand_from hint; and not __fish_seen_subcommand_from help" -f -a "value"
|
complete -c test -n "__fish_seen_subcommand_from complete" -l global -d 'everywhere'
|
||||||
complete -c test -n "__fish_seen_subcommand_from help; and not __fish_seen_subcommand_from action; and not __fish_seen_subcommand_from quote; and not __fish_seen_subcommand_from value; and not __fish_seen_subcommand_from pacman; and not __fish_seen_subcommand_from last; and not __fish_seen_subcommand_from alias; and not __fish_seen_subcommand_from hint; and not __fish_seen_subcommand_from help" -f -a "pacman"
|
complete -c test -n "__fish_seen_subcommand_from complete" -s h -l help -d 'Print help (see more with \'--help\')'
|
||||||
complete -c test -n "__fish_seen_subcommand_from help; and not __fish_seen_subcommand_from action; and not __fish_seen_subcommand_from quote; and not __fish_seen_subcommand_from value; and not __fish_seen_subcommand_from pacman; and not __fish_seen_subcommand_from last; and not __fish_seen_subcommand_from alias; and not __fish_seen_subcommand_from hint; and not __fish_seen_subcommand_from help" -f -a "last"
|
complete -c test -n "__fish_seen_subcommand_from complete" -s V -l version -d 'Print version'
|
||||||
complete -c test -n "__fish_seen_subcommand_from help; and not __fish_seen_subcommand_from action; and not __fish_seen_subcommand_from quote; and not __fish_seen_subcommand_from value; and not __fish_seen_subcommand_from pacman; and not __fish_seen_subcommand_from last; and not __fish_seen_subcommand_from alias; and not __fish_seen_subcommand_from hint; and not __fish_seen_subcommand_from help" -f -a "alias"
|
complete -c test -n "__fish_seen_subcommand_from help; and not __fish_seen_subcommand_from action; and not __fish_seen_subcommand_from quote; and not __fish_seen_subcommand_from value; and not __fish_seen_subcommand_from pacman; and not __fish_seen_subcommand_from last; and not __fish_seen_subcommand_from alias; and not __fish_seen_subcommand_from hint; and not __fish_seen_subcommand_from complete; and not __fish_seen_subcommand_from help" -f -a "action"
|
||||||
complete -c test -n "__fish_seen_subcommand_from help; and not __fish_seen_subcommand_from action; and not __fish_seen_subcommand_from quote; and not __fish_seen_subcommand_from value; and not __fish_seen_subcommand_from pacman; and not __fish_seen_subcommand_from last; and not __fish_seen_subcommand_from alias; and not __fish_seen_subcommand_from hint; and not __fish_seen_subcommand_from help" -f -a "hint"
|
complete -c test -n "__fish_seen_subcommand_from help; and not __fish_seen_subcommand_from action; and not __fish_seen_subcommand_from quote; and not __fish_seen_subcommand_from value; and not __fish_seen_subcommand_from pacman; and not __fish_seen_subcommand_from last; and not __fish_seen_subcommand_from alias; and not __fish_seen_subcommand_from hint; and not __fish_seen_subcommand_from complete; and not __fish_seen_subcommand_from help" -f -a "quote"
|
||||||
complete -c test -n "__fish_seen_subcommand_from help; and not __fish_seen_subcommand_from action; and not __fish_seen_subcommand_from quote; and not __fish_seen_subcommand_from value; and not __fish_seen_subcommand_from pacman; and not __fish_seen_subcommand_from last; and not __fish_seen_subcommand_from alias; and not __fish_seen_subcommand_from hint; and not __fish_seen_subcommand_from help" -f -a "help" -d 'Print this message or the help of the given subcommand(s)'
|
complete -c test -n "__fish_seen_subcommand_from help; and not __fish_seen_subcommand_from action; and not __fish_seen_subcommand_from quote; and not __fish_seen_subcommand_from value; and not __fish_seen_subcommand_from pacman; and not __fish_seen_subcommand_from last; and not __fish_seen_subcommand_from alias; and not __fish_seen_subcommand_from hint; and not __fish_seen_subcommand_from complete; and not __fish_seen_subcommand_from help" -f -a "value"
|
||||||
|
complete -c test -n "__fish_seen_subcommand_from help; and not __fish_seen_subcommand_from action; and not __fish_seen_subcommand_from quote; and not __fish_seen_subcommand_from value; and not __fish_seen_subcommand_from pacman; and not __fish_seen_subcommand_from last; and not __fish_seen_subcommand_from alias; and not __fish_seen_subcommand_from hint; and not __fish_seen_subcommand_from complete; and not __fish_seen_subcommand_from help" -f -a "pacman"
|
||||||
|
complete -c test -n "__fish_seen_subcommand_from help; and not __fish_seen_subcommand_from action; and not __fish_seen_subcommand_from quote; and not __fish_seen_subcommand_from value; and not __fish_seen_subcommand_from pacman; and not __fish_seen_subcommand_from last; and not __fish_seen_subcommand_from alias; and not __fish_seen_subcommand_from hint; and not __fish_seen_subcommand_from complete; and not __fish_seen_subcommand_from help" -f -a "last"
|
||||||
|
complete -c test -n "__fish_seen_subcommand_from help; and not __fish_seen_subcommand_from action; and not __fish_seen_subcommand_from quote; and not __fish_seen_subcommand_from value; and not __fish_seen_subcommand_from pacman; and not __fish_seen_subcommand_from last; and not __fish_seen_subcommand_from alias; and not __fish_seen_subcommand_from hint; and not __fish_seen_subcommand_from complete; and not __fish_seen_subcommand_from help" -f -a "alias"
|
||||||
|
complete -c test -n "__fish_seen_subcommand_from help; and not __fish_seen_subcommand_from action; and not __fish_seen_subcommand_from quote; and not __fish_seen_subcommand_from value; and not __fish_seen_subcommand_from pacman; and not __fish_seen_subcommand_from last; and not __fish_seen_subcommand_from alias; and not __fish_seen_subcommand_from hint; and not __fish_seen_subcommand_from complete; and not __fish_seen_subcommand_from help" -f -a "hint"
|
||||||
|
complete -c test -n "__fish_seen_subcommand_from help; and not __fish_seen_subcommand_from action; and not __fish_seen_subcommand_from quote; and not __fish_seen_subcommand_from value; and not __fish_seen_subcommand_from pacman; and not __fish_seen_subcommand_from last; and not __fish_seen_subcommand_from alias; and not __fish_seen_subcommand_from hint; and not __fish_seen_subcommand_from complete; and not __fish_seen_subcommand_from help" -f -a "complete" -d 'Register shell completions for this program'
|
||||||
|
complete -c test -n "__fish_seen_subcommand_from help; and not __fish_seen_subcommand_from action; and not __fish_seen_subcommand_from quote; and not __fish_seen_subcommand_from value; and not __fish_seen_subcommand_from pacman; and not __fish_seen_subcommand_from last; and not __fish_seen_subcommand_from alias; and not __fish_seen_subcommand_from hint; and not __fish_seen_subcommand_from complete; and not __fish_seen_subcommand_from help" -f -a "help" -d 'Print this message or the help of the given subcommand(s)'
|
||||||
complete -c test -n "__fish_seen_subcommand_from help; and __fish_seen_subcommand_from quote; and not __fish_seen_subcommand_from cmd-single-quotes; and not __fish_seen_subcommand_from cmd-double-quotes; and not __fish_seen_subcommand_from cmd-backticks; and not __fish_seen_subcommand_from cmd-backslash; and not __fish_seen_subcommand_from cmd-brackets; and not __fish_seen_subcommand_from cmd-expansions" -f -a "cmd-single-quotes" -d 'Can be \'always\', \'auto\', or \'never\''
|
complete -c test -n "__fish_seen_subcommand_from help; and __fish_seen_subcommand_from quote; and not __fish_seen_subcommand_from cmd-single-quotes; and not __fish_seen_subcommand_from cmd-double-quotes; and not __fish_seen_subcommand_from cmd-backticks; and not __fish_seen_subcommand_from cmd-backslash; and not __fish_seen_subcommand_from cmd-brackets; and not __fish_seen_subcommand_from cmd-expansions" -f -a "cmd-single-quotes" -d 'Can be \'always\', \'auto\', or \'never\''
|
||||||
complete -c test -n "__fish_seen_subcommand_from help; and __fish_seen_subcommand_from quote; and not __fish_seen_subcommand_from cmd-single-quotes; and not __fish_seen_subcommand_from cmd-double-quotes; and not __fish_seen_subcommand_from cmd-backticks; and not __fish_seen_subcommand_from cmd-backslash; and not __fish_seen_subcommand_from cmd-brackets; and not __fish_seen_subcommand_from cmd-expansions" -f -a "cmd-double-quotes" -d 'Can be "always", "auto", or "never"'
|
complete -c test -n "__fish_seen_subcommand_from help; and __fish_seen_subcommand_from quote; and not __fish_seen_subcommand_from cmd-single-quotes; and not __fish_seen_subcommand_from cmd-double-quotes; and not __fish_seen_subcommand_from cmd-backticks; and not __fish_seen_subcommand_from cmd-backslash; and not __fish_seen_subcommand_from cmd-brackets; and not __fish_seen_subcommand_from cmd-expansions" -f -a "cmd-double-quotes" -d 'Can be "always", "auto", or "never"'
|
||||||
complete -c test -n "__fish_seen_subcommand_from help; and __fish_seen_subcommand_from quote; and not __fish_seen_subcommand_from cmd-single-quotes; and not __fish_seen_subcommand_from cmd-double-quotes; and not __fish_seen_subcommand_from cmd-backticks; and not __fish_seen_subcommand_from cmd-backslash; and not __fish_seen_subcommand_from cmd-brackets; and not __fish_seen_subcommand_from cmd-expansions" -f -a "cmd-backticks" -d 'For more information see `echo test`'
|
complete -c test -n "__fish_seen_subcommand_from help; and __fish_seen_subcommand_from quote; and not __fish_seen_subcommand_from cmd-single-quotes; and not __fish_seen_subcommand_from cmd-double-quotes; and not __fish_seen_subcommand_from cmd-backticks; and not __fish_seen_subcommand_from cmd-backslash; and not __fish_seen_subcommand_from cmd-brackets; and not __fish_seen_subcommand_from cmd-expansions" -f -a "cmd-backticks" -d 'For more information see `echo test`'
|
||||||
|
|
|
@ -15,7 +15,7 @@ _test() {
|
||||||
|
|
||||||
local context curcontext="$curcontext" state line
|
local context curcontext="$curcontext" state line
|
||||||
_arguments "${_arguments_options[@]}" \
|
_arguments "${_arguments_options[@]}" \
|
||||||
'--generate=[generate]: :(bash elvish fish powershell zsh)' \
|
'--generate=[generate]:SHELL:(bash elvish fish powershell zsh)' \
|
||||||
'--global[everywhere]' \
|
'--global[everywhere]' \
|
||||||
'-h[Print help]' \
|
'-h[Print help]' \
|
||||||
'--help[Print help]' \
|
'--help[Print help]' \
|
||||||
|
@ -307,6 +307,18 @@ _arguments "${_arguments_options[@]}" \
|
||||||
'*::command_with_args:_cmdambivalent' \
|
'*::command_with_args:_cmdambivalent' \
|
||||||
&& ret=0
|
&& ret=0
|
||||||
;;
|
;;
|
||||||
|
(complete)
|
||||||
|
_arguments "${_arguments_options[@]}" \
|
||||||
|
'--shell=[Specify shell to complete for]:SHELL:(bash)' \
|
||||||
|
'--register=[Path to write completion-registration to]:REGISTER:_files' \
|
||||||
|
'--global[everywhere]' \
|
||||||
|
'-h[Print help (see more with '\''--help'\'')]' \
|
||||||
|
'--help[Print help (see more with '\''--help'\'')]' \
|
||||||
|
'-V[Print version]' \
|
||||||
|
'--version[Print version]' \
|
||||||
|
'*::comp_words:' \
|
||||||
|
&& ret=0
|
||||||
|
;;
|
||||||
(help)
|
(help)
|
||||||
_arguments "${_arguments_options[@]}" \
|
_arguments "${_arguments_options[@]}" \
|
||||||
":: :_test__help_commands" \
|
":: :_test__help_commands" \
|
||||||
|
@ -403,6 +415,10 @@ _arguments "${_arguments_options[@]}" \
|
||||||
_arguments "${_arguments_options[@]}" \
|
_arguments "${_arguments_options[@]}" \
|
||||||
&& ret=0
|
&& ret=0
|
||||||
;;
|
;;
|
||||||
|
(complete)
|
||||||
|
_arguments "${_arguments_options[@]}" \
|
||||||
|
&& ret=0
|
||||||
|
;;
|
||||||
(help)
|
(help)
|
||||||
_arguments "${_arguments_options[@]}" \
|
_arguments "${_arguments_options[@]}" \
|
||||||
&& ret=0
|
&& ret=0
|
||||||
|
@ -426,6 +442,7 @@ _test_commands() {
|
||||||
'last:' \
|
'last:' \
|
||||||
'alias:' \
|
'alias:' \
|
||||||
'hint:' \
|
'hint:' \
|
||||||
|
'complete:Register shell completions for this program' \
|
||||||
'help:Print this message or the help of the given subcommand(s)' \
|
'help:Print this message or the help of the given subcommand(s)' \
|
||||||
)
|
)
|
||||||
_describe -t commands 'test commands' commands "$@"
|
_describe -t commands 'test commands' commands "$@"
|
||||||
|
@ -540,6 +557,16 @@ _test__quote__help__cmd-single-quotes_commands() {
|
||||||
local commands; commands=()
|
local commands; commands=()
|
||||||
_describe -t commands 'test quote help cmd-single-quotes commands' commands "$@"
|
_describe -t commands 'test quote help cmd-single-quotes commands' commands "$@"
|
||||||
}
|
}
|
||||||
|
(( $+functions[_test__complete_commands] )) ||
|
||||||
|
_test__complete_commands() {
|
||||||
|
local commands; commands=()
|
||||||
|
_describe -t commands 'test complete commands' commands "$@"
|
||||||
|
}
|
||||||
|
(( $+functions[_test__help__complete_commands] )) ||
|
||||||
|
_test__help__complete_commands() {
|
||||||
|
local commands; commands=()
|
||||||
|
_describe -t commands 'test help complete commands' commands "$@"
|
||||||
|
}
|
||||||
(( $+functions[_test__help_commands] )) ||
|
(( $+functions[_test__help_commands] )) ||
|
||||||
_test__help_commands() {
|
_test__help_commands() {
|
||||||
local commands; commands=(
|
local commands; commands=(
|
||||||
|
@ -550,6 +577,7 @@ _test__help_commands() {
|
||||||
'last:' \
|
'last:' \
|
||||||
'alias:' \
|
'alias:' \
|
||||||
'hint:' \
|
'hint:' \
|
||||||
|
'complete:Register shell completions for this program' \
|
||||||
'help:Print this message or the help of the given subcommand(s)' \
|
'help:Print this message or the help of the given subcommand(s)' \
|
||||||
)
|
)
|
||||||
_describe -t commands 'test help commands' commands "$@"
|
_describe -t commands 'test help commands' commands "$@"
|
||||||
|
|
|
@ -156,8 +156,8 @@ fn complete() {
|
||||||
|
|
||||||
let input = "test \t\t";
|
let input = "test \t\t";
|
||||||
let expected = r#"%
|
let expected = r#"%
|
||||||
-h --global --help action value last hint
|
-h --global --help action value last hint help
|
||||||
-V --generate --version quote pacman alias help"#;
|
-V --generate --version quote pacman alias complete"#;
|
||||||
let actual = runtime.complete(input, &term).unwrap();
|
let actual = runtime.complete(input, &term).unwrap();
|
||||||
snapbox::assert_eq(expected, actual);
|
snapbox::assert_eq(expected, actual);
|
||||||
}
|
}
|
||||||
|
|
|
@ -308,9 +308,17 @@ pub fn register_example(context: &str, name: &str, shell: completest::Shell) {
|
||||||
.join(shell_name);
|
.join(shell_name);
|
||||||
println!("Compiling");
|
println!("Compiling");
|
||||||
let manifest_path = std::path::Path::new(env!("CARGO_MANIFEST_DIR")).join("Cargo.toml");
|
let manifest_path = std::path::Path::new(env!("CARGO_MANIFEST_DIR")).join("Cargo.toml");
|
||||||
let bin_path =
|
let bin_path = snapbox::cmd::compile_example(
|
||||||
snapbox::cmd::compile_example(name, ["--manifest-path", manifest_path.to_str().unwrap()])
|
name,
|
||||||
.unwrap();
|
[
|
||||||
|
"--manifest-path",
|
||||||
|
manifest_path.to_str().unwrap(),
|
||||||
|
// Unconditionally include to avoid completion file tests failing based on the how
|
||||||
|
// `cargo test` is invoked
|
||||||
|
"--features=unstable-dynamic",
|
||||||
|
],
|
||||||
|
)
|
||||||
|
.unwrap();
|
||||||
println!("Compiled");
|
println!("Compiled");
|
||||||
let bin_root = bin_path.parent().unwrap().to_owned();
|
let bin_root = bin_path.parent().unwrap().to_owned();
|
||||||
|
|
||||||
|
@ -353,9 +361,17 @@ pub fn load_runtime(
|
||||||
let home = scratch.path().unwrap().to_owned();
|
let home = scratch.path().unwrap().to_owned();
|
||||||
println!("Compiling");
|
println!("Compiling");
|
||||||
let manifest_path = std::path::Path::new(env!("CARGO_MANIFEST_DIR")).join("Cargo.toml");
|
let manifest_path = std::path::Path::new(env!("CARGO_MANIFEST_DIR")).join("Cargo.toml");
|
||||||
let bin_path =
|
let bin_path = snapbox::cmd::compile_example(
|
||||||
snapbox::cmd::compile_example(name, ["--manifest-path", manifest_path.to_str().unwrap()])
|
name,
|
||||||
.unwrap();
|
[
|
||||||
|
"--manifest-path",
|
||||||
|
manifest_path.to_str().unwrap(),
|
||||||
|
// Unconditionally include to avoid completion file tests failing based on the how
|
||||||
|
// `cargo test` is invoked
|
||||||
|
"--features=unstable-dynamic",
|
||||||
|
],
|
||||||
|
)
|
||||||
|
.unwrap();
|
||||||
println!("Compiled");
|
println!("Compiled");
|
||||||
let bin_root = bin_path.parent().unwrap().to_owned();
|
let bin_root = bin_path.parent().unwrap().to_owned();
|
||||||
|
|
||||||
|
|
|
@ -146,6 +146,7 @@ fn complete() {
|
||||||
-h Print help
|
-h Print help
|
||||||
action action
|
action action
|
||||||
alias alias
|
alias alias
|
||||||
|
complete Register shell completions for this program
|
||||||
help Print this message or the help of the given subcommand(s)
|
help Print this message or the help of the given subcommand(s)
|
||||||
hint hint
|
hint hint
|
||||||
last last
|
last last
|
||||||
|
|
|
@ -138,8 +138,8 @@ fn complete() {
|
||||||
|
|
||||||
let input = "test \t";
|
let input = "test \t";
|
||||||
let expected = r#"% test
|
let expected = r#"% test
|
||||||
action help (Print this message or the help of the given subcommand(s)) last quote
|
action complete (Register shell completions for this program) hint pacman value
|
||||||
alias hint pacman value"#;
|
alias help (Print this message or the help of the given subcommand(s)) last quote"#;
|
||||||
let actual = runtime.complete(input, &term).unwrap();
|
let actual = runtime.complete(input, &term).unwrap();
|
||||||
snapbox::assert_eq(expected, actual);
|
snapbox::assert_eq(expected, actual);
|
||||||
}
|
}
|
||||||
|
|
|
@ -138,8 +138,9 @@ fn complete() {
|
||||||
|
|
||||||
let input = "test \t";
|
let input = "test \t";
|
||||||
let expected = r#"% test
|
let expected = r#"% test
|
||||||
help -- Print this message or the help of the given subcommand(s)
|
complete -- Register shell completions for this program
|
||||||
pacman action alias value quote hint last --"#;
|
help -- Print this message or the help of the given subcommand(s)
|
||||||
|
pacman action alias value quote hint last --"#;
|
||||||
let actual = runtime.complete(input, &term).unwrap();
|
let actual = runtime.complete(input, &term).unwrap();
|
||||||
snapbox::assert_eq(expected, actual);
|
snapbox::assert_eq(expected, actual);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue