mirror of
https://github.com/systemd/systemd.git
synced 2025-05-27 21:05:55 +03:00
zsh: update varlinkctl completions
correct redundant or mismatched tags and fill the argument field of curcontext because _regex_words does not do that for us. The _complete_help text now looks much more reasonable most of the time: $ varlinkctl call /run/systemd/resolve/io.systemd.Resolve ^Xh tags in context :completion::complete:varlinkctl:: argument-rest (_arguments _varlinkctl) tags in context :completion::complete:varlinkctl-call:method: varlink-methods (_varlinkctl_cmd _varlinkctl_command _arguments _varlinkctl) Fixes: af63b4b769bf ("zsh: add varlinkctl completions")
This commit is contained in:
parent
e846854172
commit
09a8a0d023
@ -4,27 +4,25 @@
|
||||
local -a reply line
|
||||
|
||||
_varlinkctl_interfaces() {
|
||||
local expl
|
||||
_wanted varlink-interfaces expl interface compadd "$@" -- \
|
||||
compadd "$@" -- \
|
||||
"${(@f)$(_call_program varlink-interfaces varlinkctl list-interfaces $line[2])}"
|
||||
}
|
||||
|
||||
_varlinkctl_methods() {
|
||||
local expl
|
||||
_wanted varlink-interfaces expl method compadd "$@" -- \
|
||||
compadd "$@" -- \
|
||||
"${(@f)$(_call_program varlink-methods varlinkctl list-methods $line[2])}"
|
||||
}
|
||||
|
||||
local -a varlink_addr=(
|
||||
/$'[^\0]#\0'/ ':varlink-address:varlink address:_files -g "*(=)"'
|
||||
/$'[^\0]#\0'/ ':varlink-addresses:varlink address:_files -g "*(=)"'
|
||||
)
|
||||
local -a varlink_interface=(
|
||||
$varlink_addr
|
||||
/$'[^\0]#\0'/ ':varlink-interface:varlink interface:_varlinkctl_interfaces'
|
||||
/$'[^\0]#\0'/ ':varlink-interfaces:varlink interface:_varlinkctl_interfaces'
|
||||
)
|
||||
local -a varlink_method=(
|
||||
$varlink_addr
|
||||
/$'[^\0]#\0'/ ':varlink-method:varlink method:_varlinkctl_methods'
|
||||
/$'[^\0]#\0'/ ':varlink-methods:varlink method:_varlinkctl_methods'
|
||||
)
|
||||
local -a varlink_call=($varlink_method /$'[^\0]#\0'/ ':argument:argument:()')
|
||||
local -a varlink_idl=(/$'[^\0]#\0'/ ':varlink-idl-file:idl file:_files')
|
||||
@ -39,7 +37,27 @@ _regex_words varlink-commands 'varlink command' \
|
||||
'help:show a help message'
|
||||
|
||||
local -a varlinkcmd=( /$'[^\0]#\0'/ "$reply[@]" )
|
||||
_regex_arguments _varlinkctl_command "$varlinkcmd[@]"
|
||||
_regex_arguments _varlinkctl_cmd "$varlinkcmd[@]"
|
||||
|
||||
_varlinkctl_command() {
|
||||
local varlink_command=varlinkctl
|
||||
((CURRENT > 2 )) && varlink_command=varlinkctl-$line[1]
|
||||
|
||||
local -a varlink_args
|
||||
case "$line[1]" in
|
||||
(info|list-interfaces)
|
||||
varlink_args=(address) ;;
|
||||
(introspect|list-methods)
|
||||
varlink_args=(address interface) ;;
|
||||
(call)
|
||||
varlink_args=(address method arguments) ;;
|
||||
(validate-idl)
|
||||
varlink_args=(file) ;;
|
||||
esac
|
||||
|
||||
curcontext="${curcontext%:*:*}:$varlink_command:$varlink_args[CURRENT-2]"
|
||||
_varlinkctl_cmd "$@"
|
||||
}
|
||||
|
||||
local -a opts=(
|
||||
{-h,--help}'[Show a help message and exit]'
|
||||
|
Loading…
x
Reference in New Issue
Block a user