2022-03-07 20:03:46 +00:00
|
|
|
#compdef my-app
|
|
|
|
|
|
|
|
autoload -U is-at-least
|
|
|
|
|
|
|
|
_my-app() {
|
|
|
|
typeset -A opt_args
|
|
|
|
typeset -a _arguments_options
|
|
|
|
local ret=1
|
|
|
|
|
|
|
|
if is-at-least 5.2; then
|
|
|
|
_arguments_options=(-s -S -C)
|
|
|
|
else
|
|
|
|
_arguments_options=(-s -C)
|
|
|
|
fi
|
|
|
|
|
|
|
|
local context curcontext="$curcontext" state line
|
2022-09-02 12:35:12 +00:00
|
|
|
_arguments "${_arguments_options[@]}" \
|
|
|
|
'*-c[some config file]' \
|
|
|
|
'*-C[some config file]' \
|
|
|
|
'*--config[some config file]' \
|
|
|
|
'*--conf[some config file]' \
|
2023-01-03 16:49:43 +00:00
|
|
|
'-h[Print help]' \
|
|
|
|
'--help[Print help]' \
|
|
|
|
'-V[Print version]' \
|
|
|
|
'--version[Print version]' \
|
2022-09-02 12:35:12 +00:00
|
|
|
'::file -- some input file:_files' \
|
|
|
|
'::choice:(first second)' \
|
|
|
|
":: :_my-app_commands" \
|
|
|
|
"*::: :->my-app" \
|
2022-03-07 20:03:46 +00:00
|
|
|
&& ret=0
|
|
|
|
case $state in
|
|
|
|
(my-app)
|
|
|
|
words=($line[3] "${words[@]}")
|
|
|
|
(( CURRENT += 1 ))
|
|
|
|
curcontext="${curcontext%:*:*}:my-app-command-$line[3]:"
|
|
|
|
case $line[3] in
|
|
|
|
(test)
|
2022-09-02 12:35:12 +00:00
|
|
|
_arguments "${_arguments_options[@]}" \
|
2022-09-28 19:44:27 +00:00
|
|
|
'--case=[the case to test]: : ' \
|
2023-01-03 16:49:43 +00:00
|
|
|
'-h[Print help]' \
|
|
|
|
'--help[Print help]' \
|
|
|
|
'-V[Print version]' \
|
|
|
|
'--version[Print version]' \
|
2022-03-07 20:03:46 +00:00
|
|
|
&& ret=0
|
|
|
|
;;
|
|
|
|
(some_cmd)
|
2022-09-02 12:35:12 +00:00
|
|
|
_arguments "${_arguments_options[@]}" \
|
2022-09-28 19:44:27 +00:00
|
|
|
'--config=[the other case to test]: : ' \
|
2023-01-03 16:49:43 +00:00
|
|
|
'-h[Print help]' \
|
|
|
|
'--help[Print help]' \
|
|
|
|
'-V[Print version]' \
|
|
|
|
'--version[Print version]' \
|
2022-09-02 12:35:12 +00:00
|
|
|
'*::path:' \
|
2022-03-07 20:03:46 +00:00
|
|
|
&& ret=0
|
|
|
|
;;
|
|
|
|
(some-cmd-with-hyphens)
|
2022-09-02 12:35:12 +00:00
|
|
|
_arguments "${_arguments_options[@]}" \
|
2023-01-03 16:49:43 +00:00
|
|
|
'-h[Print help]' \
|
|
|
|
'--help[Print help]' \
|
|
|
|
'-V[Print version]' \
|
|
|
|
'--version[Print version]' \
|
2022-03-07 20:03:46 +00:00
|
|
|
&& ret=0
|
|
|
|
;;
|
2022-03-17 20:35:52 +00:00
|
|
|
(some-hidden-cmd)
|
2022-09-02 12:35:12 +00:00
|
|
|
_arguments "${_arguments_options[@]}" \
|
2023-01-03 16:49:43 +00:00
|
|
|
'-h[Print help]' \
|
|
|
|
'--help[Print help]' \
|
|
|
|
'-V[Print version]' \
|
|
|
|
'--version[Print version]' \
|
2022-03-17 20:35:52 +00:00
|
|
|
&& ret=0
|
|
|
|
;;
|
2022-03-07 20:03:46 +00:00
|
|
|
(help)
|
2022-09-02 12:35:12 +00:00
|
|
|
_arguments "${_arguments_options[@]}" \
|
|
|
|
":: :_my-app__help_commands" \
|
|
|
|
"*::: :->help" \
|
2022-08-25 05:44:07 +00:00
|
|
|
&& ret=0
|
|
|
|
|
|
|
|
case $state in
|
|
|
|
(help)
|
|
|
|
words=($line[1] "${words[@]}")
|
|
|
|
(( CURRENT += 1 ))
|
|
|
|
curcontext="${curcontext%:*:*}:my-app-help-command-$line[1]:"
|
|
|
|
case $line[1] in
|
|
|
|
(test)
|
2022-09-02 12:35:12 +00:00
|
|
|
_arguments "${_arguments_options[@]}" \
|
2022-08-25 05:44:07 +00:00
|
|
|
&& ret=0
|
|
|
|
;;
|
|
|
|
(some_cmd)
|
2022-09-02 12:35:12 +00:00
|
|
|
_arguments "${_arguments_options[@]}" \
|
2022-08-25 05:44:07 +00:00
|
|
|
&& ret=0
|
|
|
|
;;
|
|
|
|
(some-cmd-with-hyphens)
|
2022-09-02 12:35:12 +00:00
|
|
|
_arguments "${_arguments_options[@]}" \
|
2022-08-25 05:44:07 +00:00
|
|
|
&& ret=0
|
|
|
|
;;
|
|
|
|
(some-hidden-cmd)
|
2022-09-02 12:35:12 +00:00
|
|
|
_arguments "${_arguments_options[@]}" \
|
2022-08-25 05:44:07 +00:00
|
|
|
&& ret=0
|
|
|
|
;;
|
|
|
|
(help)
|
2022-09-02 12:35:12 +00:00
|
|
|
_arguments "${_arguments_options[@]}" \
|
2022-03-07 20:03:46 +00:00
|
|
|
&& ret=0
|
|
|
|
;;
|
|
|
|
esac
|
|
|
|
;;
|
|
|
|
esac
|
2022-08-25 05:44:07 +00:00
|
|
|
;;
|
|
|
|
esac
|
|
|
|
;;
|
|
|
|
esac
|
2022-03-07 20:03:46 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
(( $+functions[_my-app_commands] )) ||
|
|
|
|
_my-app_commands() {
|
|
|
|
local commands; commands=(
|
2022-09-02 12:35:12 +00:00
|
|
|
'test:tests things' \
|
|
|
|
'some_cmd:tests other things' \
|
|
|
|
'some-cmd-with-hyphens:' \
|
|
|
|
'some-hidden-cmd:' \
|
|
|
|
'help:Print this message or the help of the given subcommand(s)' \
|
2022-03-07 20:03:46 +00:00
|
|
|
)
|
|
|
|
_describe -t commands 'my-app commands' commands "$@"
|
|
|
|
}
|
|
|
|
(( $+functions[_my-app__help_commands] )) ||
|
|
|
|
_my-app__help_commands() {
|
2022-08-25 05:44:07 +00:00
|
|
|
local commands; commands=(
|
2022-09-02 12:35:12 +00:00
|
|
|
'test:tests things' \
|
|
|
|
'some_cmd:tests other things' \
|
|
|
|
'some-cmd-with-hyphens:' \
|
|
|
|
'some-hidden-cmd:' \
|
|
|
|
'help:Print this message or the help of the given subcommand(s)' \
|
2022-08-25 05:44:07 +00:00
|
|
|
)
|
2022-03-07 20:03:46 +00:00
|
|
|
_describe -t commands 'my-app help commands' commands "$@"
|
|
|
|
}
|
2022-08-25 05:44:07 +00:00
|
|
|
(( $+functions[_my-app__help__help_commands] )) ||
|
|
|
|
_my-app__help__help_commands() {
|
|
|
|
local commands; commands=()
|
|
|
|
_describe -t commands 'my-app help help commands' commands "$@"
|
|
|
|
}
|
|
|
|
(( $+functions[_my-app__help__some-cmd-with-hyphens_commands] )) ||
|
|
|
|
_my-app__help__some-cmd-with-hyphens_commands() {
|
|
|
|
local commands; commands=()
|
|
|
|
_describe -t commands 'my-app help some-cmd-with-hyphens commands' commands "$@"
|
|
|
|
}
|
|
|
|
(( $+functions[_my-app__help__some-hidden-cmd_commands] )) ||
|
|
|
|
_my-app__help__some-hidden-cmd_commands() {
|
|
|
|
local commands; commands=()
|
|
|
|
_describe -t commands 'my-app help some-hidden-cmd commands' commands "$@"
|
|
|
|
}
|
|
|
|
(( $+functions[_my-app__help__some_cmd_commands] )) ||
|
|
|
|
_my-app__help__some_cmd_commands() {
|
|
|
|
local commands; commands=()
|
|
|
|
_describe -t commands 'my-app help some_cmd commands' commands "$@"
|
|
|
|
}
|
|
|
|
(( $+functions[_my-app__help__test_commands] )) ||
|
|
|
|
_my-app__help__test_commands() {
|
|
|
|
local commands; commands=()
|
|
|
|
_describe -t commands 'my-app help test commands' commands "$@"
|
|
|
|
}
|
fix(complete): Fix zsh.rs subcommand deduplication
Fixing the iteration over all_subcommands in zsh.rs. We deduplicate
values on (sc_name, bin_name) keys, but then only iterate on bin_name.
This doesn't cause problems now, since all bin names seem to be unique.
However, without fixing this, the next commit would have started
generating duplicated functions with same names.
For example, with an #[long = "foo", visible_alias = "bar"] subcommand,
we'll end up with 2 pairs: [("foo", "foo"), ("bar", "foo")]. Before this
commit, we would have ended up generating _my-app__foo_commands()
functions. These functions should have identical content, so it is not
an error, just an inefficiency that we can fix.
2024-04-27 13:06:45 +00:00
|
|
|
(( $+functions[_my-app__some-cmd-with-hyphens_commands] )) ||
|
|
|
|
_my-app__some-cmd-with-hyphens_commands() {
|
|
|
|
local commands; commands=()
|
|
|
|
_describe -t commands 'my-app some-cmd-with-hyphens commands' commands "$@"
|
|
|
|
}
|
|
|
|
(( $+functions[_my-app__some-hidden-cmd_commands] )) ||
|
|
|
|
_my-app__some-hidden-cmd_commands() {
|
|
|
|
local commands; commands=()
|
|
|
|
_describe -t commands 'my-app some-hidden-cmd commands' commands "$@"
|
|
|
|
}
|
|
|
|
(( $+functions[_my-app__some_cmd_commands] )) ||
|
|
|
|
_my-app__some_cmd_commands() {
|
|
|
|
local commands; commands=()
|
|
|
|
_describe -t commands 'my-app some_cmd commands' commands "$@"
|
|
|
|
}
|
2022-03-07 20:03:46 +00:00
|
|
|
(( $+functions[_my-app__test_commands] )) ||
|
|
|
|
_my-app__test_commands() {
|
|
|
|
local commands; commands=()
|
|
|
|
_describe -t commands 'my-app test commands' commands "$@"
|
|
|
|
}
|
|
|
|
|
2023-02-27 08:56:38 +00:00
|
|
|
if [ "$funcstack[1]" = "_my-app" ]; then
|
|
|
|
_my-app "$@"
|
|
|
|
else
|
|
|
|
compdef _my-app my-app
|
|
|
|
fi
|