mirror of
https://github.com/systemd/systemd.git
synced 2025-07-10 00:59:16 +03:00
zsh: add varlinkctl completions
This commit is contained in:
committed by
Luca Boccassi
parent
518ea76ecd
commit
af63b4b769
52
shell-completion/zsh/_varlinkctl
Normal file
52
shell-completion/zsh/_varlinkctl
Normal file
@ -0,0 +1,52 @@
|
||||
#compdef varlinkctl
|
||||
# SPDX-License-Identifier: LGPL-2.1-or-later
|
||||
|
||||
local -a reply line
|
||||
|
||||
_varlinkctl_interfaces() {
|
||||
local expl
|
||||
_wanted varlink-interfaces expl interface compadd "$@" -- \
|
||||
"${(@f)$(_call_program varlink-interfaces varlinkctl list-interfaces $line[2])}"
|
||||
}
|
||||
|
||||
_varlinkctl_methods() {
|
||||
local expl
|
||||
_wanted varlink-interfaces expl method compadd "$@" -- \
|
||||
"${(@f)$(_call_program varlink-methods varlinkctl list-methods $line[2])}"
|
||||
}
|
||||
|
||||
local -a varlink_addr=(
|
||||
/$'[^\0]#\0'/ ':varlink-address:varlink address:_files -g "*(=)"'
|
||||
)
|
||||
local -a varlink_interface=(
|
||||
$varlink_addr
|
||||
/$'[^\0]#\0'/ ':varlink-interface:varlink interface:_varlinkctl_interfaces'
|
||||
)
|
||||
local -a varlink_method=(
|
||||
$varlink_addr
|
||||
/$'[^\0]#\0'/ ':varlink-method: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')
|
||||
|
||||
_regex_words varlink-commands 'varlink command' \
|
||||
'info:show service information:$varlink_addr' \
|
||||
'list-interfaces:List interfaces implemented by a service:$varlink_addr' \
|
||||
'list-methods:List methods implemented by an interface:$varlink_interface' \
|
||||
'introspect:show an interface definition:$varlink_interface' \
|
||||
'call:invoke a method:$varlink_call' \
|
||||
'validate-idl:validate an interface description:$varlink_idl' \
|
||||
'help:show a help message'
|
||||
|
||||
local -a varlinkcmd=( /$'[^\0]#\0'/ "$reply[@]" )
|
||||
_regex_arguments _varlinkctl_command "$varlinkcmd[@]"
|
||||
|
||||
local -a opts=(
|
||||
{-h,--help}'[Show a help message and exit]'
|
||||
'--version[Show package version and exit]'
|
||||
'--no-pager[Do not pipe output to a pager]'
|
||||
'--more[Request multiple responses]'
|
||||
'--collect[Collect multiple responses in a JSON array]'
|
||||
{-j+,--json=}'[Output as json]:json-mode:(pretty short)'
|
||||
)
|
||||
_arguments -S $opts '*:: := _varlinkctl_command'
|
@ -23,6 +23,7 @@ items = [['_busctl', ''],
|
||||
['_systemd-run', ''],
|
||||
['_run0', ''],
|
||||
['_udevadm', ''],
|
||||
['_varlinkctl', ''],
|
||||
['_kernel-install', 'ENABLE_KERNEL_INSTALL'],
|
||||
['_sd_hosts_or_user_at_host', ''],
|
||||
['_sd_outputmodes', ''],
|
||||
|
Reference in New Issue
Block a user