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
|
2024-06-07 15:45:03 +00:00
|
|
|
_arguments "${_arguments_options[@]}" : \
|
2022-09-28 19:44:27 +00:00
|
|
|
'--single-quotes[Can be '\''always'\'', '\''auto'\'', or '\''never'\'']' \
|
|
|
|
'--double-quotes[Can be "always", "auto", or "never"]' \
|
2023-04-20 19:52:36 +00:00
|
|
|
'--backticks[For more information see \`echo test\`]' \
|
2022-09-28 19:44:27 +00:00
|
|
|
'--backslash[Avoid '\''\\n'\'']' \
|
|
|
|
'--brackets[List packages \[filter\]]' \
|
2023-04-20 19:52:36 +00:00
|
|
|
'--expansions[Execute the shell command with \$SHELL]' \
|
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
|
|
|
":: :_my-app_commands" \
|
|
|
|
"*::: :->my-app" \
|
2022-03-07 20:03:46 +00:00
|
|
|
&& ret=0
|
|
|
|
case $state in
|
|
|
|
(my-app)
|
|
|
|
words=($line[1] "${words[@]}")
|
|
|
|
(( CURRENT += 1 ))
|
|
|
|
curcontext="${curcontext%:*:*}:my-app-command-$line[1]:"
|
|
|
|
case $line[1] in
|
|
|
|
(cmd-single-quotes)
|
2024-06-07 15:45:03 +00:00
|
|
|
_arguments "${_arguments_options[@]}" : \
|
2023-01-03 16:49:43 +00:00
|
|
|
'-h[Print help]' \
|
|
|
|
'--help[Print help]' \
|
2022-03-07 20:03:46 +00:00
|
|
|
&& ret=0
|
|
|
|
;;
|
|
|
|
(cmd-double-quotes)
|
2024-06-07 15:45:03 +00:00
|
|
|
_arguments "${_arguments_options[@]}" : \
|
2023-01-03 16:49:43 +00:00
|
|
|
'-h[Print help]' \
|
|
|
|
'--help[Print help]' \
|
2022-03-07 20:03:46 +00:00
|
|
|
&& ret=0
|
|
|
|
;;
|
|
|
|
(cmd-backticks)
|
2024-06-07 15:45:03 +00:00
|
|
|
_arguments "${_arguments_options[@]}" : \
|
2023-01-03 16:49:43 +00:00
|
|
|
'-h[Print help]' \
|
|
|
|
'--help[Print help]' \
|
2022-03-07 20:03:46 +00:00
|
|
|
&& ret=0
|
|
|
|
;;
|
|
|
|
(cmd-backslash)
|
2024-06-07 15:45:03 +00:00
|
|
|
_arguments "${_arguments_options[@]}" : \
|
2023-01-03 16:49:43 +00:00
|
|
|
'-h[Print help]' \
|
|
|
|
'--help[Print help]' \
|
2022-03-07 20:03:46 +00:00
|
|
|
&& ret=0
|
|
|
|
;;
|
|
|
|
(cmd-brackets)
|
2024-06-07 15:45:03 +00:00
|
|
|
_arguments "${_arguments_options[@]}" : \
|
2023-01-03 16:49:43 +00:00
|
|
|
'-h[Print help]' \
|
|
|
|
'--help[Print help]' \
|
2022-03-07 20:03:46 +00:00
|
|
|
&& ret=0
|
|
|
|
;;
|
|
|
|
(cmd-expansions)
|
2024-06-07 15:45:03 +00:00
|
|
|
_arguments "${_arguments_options[@]}" : \
|
2023-01-03 16:49:43 +00:00
|
|
|
'-h[Print help]' \
|
|
|
|
'--help[Print help]' \
|
2022-03-07 20:03:46 +00:00
|
|
|
&& ret=0
|
|
|
|
;;
|
|
|
|
(help)
|
2024-06-07 15:45:03 +00:00
|
|
|
_arguments "${_arguments_options[@]}" : \
|
2022-09-02 12:35:12 +00:00
|
|
|
":: :_my-app__help_commands" \
|
|
|
|
"*::: :->help" \
|
2022-03-07 20:03:46 +00:00
|
|
|
&& ret=0
|
2022-08-25 05:44:07 +00:00
|
|
|
|
|
|
|
case $state in
|
|
|
|
(help)
|
|
|
|
words=($line[1] "${words[@]}")
|
|
|
|
(( CURRENT += 1 ))
|
|
|
|
curcontext="${curcontext%:*:*}:my-app-help-command-$line[1]:"
|
|
|
|
case $line[1] in
|
|
|
|
(cmd-single-quotes)
|
2024-06-07 15:45:03 +00:00
|
|
|
_arguments "${_arguments_options[@]}" : \
|
2022-08-25 05:44:07 +00:00
|
|
|
&& ret=0
|
|
|
|
;;
|
|
|
|
(cmd-double-quotes)
|
2024-06-07 15:45:03 +00:00
|
|
|
_arguments "${_arguments_options[@]}" : \
|
2022-08-25 05:44:07 +00:00
|
|
|
&& ret=0
|
|
|
|
;;
|
|
|
|
(cmd-backticks)
|
2024-06-07 15:45:03 +00:00
|
|
|
_arguments "${_arguments_options[@]}" : \
|
2022-08-25 05:44:07 +00:00
|
|
|
&& ret=0
|
|
|
|
;;
|
|
|
|
(cmd-backslash)
|
2024-06-07 15:45:03 +00:00
|
|
|
_arguments "${_arguments_options[@]}" : \
|
2022-08-25 05:44:07 +00:00
|
|
|
&& ret=0
|
|
|
|
;;
|
|
|
|
(cmd-brackets)
|
2024-06-07 15:45:03 +00:00
|
|
|
_arguments "${_arguments_options[@]}" : \
|
2022-08-25 05:44:07 +00:00
|
|
|
&& ret=0
|
|
|
|
;;
|
|
|
|
(cmd-expansions)
|
2024-06-07 15:45:03 +00:00
|
|
|
_arguments "${_arguments_options[@]}" : \
|
2022-08-25 05:44:07 +00:00
|
|
|
&& ret=0
|
|
|
|
;;
|
|
|
|
(help)
|
2024-06-07 15:45:03 +00:00
|
|
|
_arguments "${_arguments_options[@]}" : \
|
2022-08-25 05:44:07 +00:00
|
|
|
&& ret=0
|
|
|
|
;;
|
|
|
|
esac
|
|
|
|
;;
|
|
|
|
esac
|
2022-03-07 20:03:46 +00:00
|
|
|
;;
|
|
|
|
esac
|
|
|
|
;;
|
|
|
|
esac
|
|
|
|
}
|
|
|
|
|
|
|
|
(( $+functions[_my-app_commands] )) ||
|
|
|
|
_my-app_commands() {
|
|
|
|
local commands; commands=(
|
2022-09-02 12:35:12 +00:00
|
|
|
'cmd-single-quotes:Can be '\''always'\'', '\''auto'\'', or '\''never'\''' \
|
|
|
|
'cmd-double-quotes:Can be "always", "auto", or "never"' \
|
2023-04-20 19:52:36 +00:00
|
|
|
'cmd-backticks:For more information see \`echo test\`' \
|
2022-09-02 12:35:12 +00:00
|
|
|
'cmd-backslash:Avoid '\''\\n'\''' \
|
|
|
|
'cmd-brackets:List packages \[filter\]' \
|
2023-04-20 19:52:36 +00:00
|
|
|
'cmd-expansions:Execute the shell command with \$SHELL' \
|
2022-09-02 12:35:12 +00:00
|
|
|
'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__cmd-backslash_commands] )) ||
|
|
|
|
_my-app__cmd-backslash_commands() {
|
|
|
|
local commands; commands=()
|
|
|
|
_describe -t commands 'my-app cmd-backslash commands' commands "$@"
|
|
|
|
}
|
|
|
|
(( $+functions[_my-app__cmd-backticks_commands] )) ||
|
|
|
|
_my-app__cmd-backticks_commands() {
|
|
|
|
local commands; commands=()
|
|
|
|
_describe -t commands 'my-app cmd-backticks commands' commands "$@"
|
|
|
|
}
|
|
|
|
(( $+functions[_my-app__cmd-brackets_commands] )) ||
|
|
|
|
_my-app__cmd-brackets_commands() {
|
|
|
|
local commands; commands=()
|
|
|
|
_describe -t commands 'my-app cmd-brackets commands' commands "$@"
|
|
|
|
}
|
|
|
|
(( $+functions[_my-app__cmd-double-quotes_commands] )) ||
|
|
|
|
_my-app__cmd-double-quotes_commands() {
|
|
|
|
local commands; commands=()
|
|
|
|
_describe -t commands 'my-app cmd-double-quotes commands' commands "$@"
|
|
|
|
}
|
|
|
|
(( $+functions[_my-app__cmd-expansions_commands] )) ||
|
|
|
|
_my-app__cmd-expansions_commands() {
|
|
|
|
local commands; commands=()
|
|
|
|
_describe -t commands 'my-app cmd-expansions commands' commands "$@"
|
|
|
|
}
|
|
|
|
(( $+functions[_my-app__cmd-single-quotes_commands] )) ||
|
|
|
|
_my-app__cmd-single-quotes_commands() {
|
|
|
|
local commands; commands=()
|
|
|
|
_describe -t commands 'my-app cmd-single-quotes 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
|
|
|
'cmd-single-quotes:Can be '\''always'\'', '\''auto'\'', or '\''never'\''' \
|
|
|
|
'cmd-double-quotes:Can be "always", "auto", or "never"' \
|
2023-04-20 19:52:36 +00:00
|
|
|
'cmd-backticks:For more information see \`echo test\`' \
|
2022-09-02 12:35:12 +00:00
|
|
|
'cmd-backslash:Avoid '\''\\n'\''' \
|
|
|
|
'cmd-brackets:List packages \[filter\]' \
|
2023-04-20 19:52:36 +00:00
|
|
|
'cmd-expansions:Execute the shell command with \$SHELL' \
|
2022-09-02 12:35:12 +00:00
|
|
|
'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 "$@"
|
|
|
|
}
|
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__help__cmd-backslash_commands] )) ||
|
|
|
|
_my-app__help__cmd-backslash_commands() {
|
|
|
|
local commands; commands=()
|
|
|
|
_describe -t commands 'my-app help cmd-backslash commands' commands "$@"
|
|
|
|
}
|
|
|
|
(( $+functions[_my-app__help__cmd-backticks_commands] )) ||
|
|
|
|
_my-app__help__cmd-backticks_commands() {
|
|
|
|
local commands; commands=()
|
|
|
|
_describe -t commands 'my-app help cmd-backticks commands' commands "$@"
|
|
|
|
}
|
|
|
|
(( $+functions[_my-app__help__cmd-brackets_commands] )) ||
|
|
|
|
_my-app__help__cmd-brackets_commands() {
|
|
|
|
local commands; commands=()
|
|
|
|
_describe -t commands 'my-app help cmd-brackets commands' commands "$@"
|
|
|
|
}
|
|
|
|
(( $+functions[_my-app__help__cmd-double-quotes_commands] )) ||
|
|
|
|
_my-app__help__cmd-double-quotes_commands() {
|
|
|
|
local commands; commands=()
|
|
|
|
_describe -t commands 'my-app help cmd-double-quotes commands' commands "$@"
|
|
|
|
}
|
|
|
|
(( $+functions[_my-app__help__cmd-expansions_commands] )) ||
|
|
|
|
_my-app__help__cmd-expansions_commands() {
|
|
|
|
local commands; commands=()
|
|
|
|
_describe -t commands 'my-app help cmd-expansions commands' commands "$@"
|
|
|
|
}
|
|
|
|
(( $+functions[_my-app__help__cmd-single-quotes_commands] )) ||
|
|
|
|
_my-app__help__cmd-single-quotes_commands() {
|
|
|
|
local commands; commands=()
|
|
|
|
_describe -t commands 'my-app help cmd-single-quotes 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 "$@"
|
|
|
|
}
|
2022-03-07 20:03:46 +00:00
|
|
|
|
2023-02-27 08:56:38 +00:00
|
|
|
if [ "$funcstack[1]" = "_my-app" ]; then
|
|
|
|
_my-app "$@"
|
|
|
|
else
|
|
|
|
compdef _my-app my-app
|
|
|
|
fi
|