diff options
author | Ronan Pigott <ronan@rjp.ie> | 2024-07-19 10:20:15 +0200 |
---|---|---|
committer | Luca Boccassi <luca.boccassi@gmail.com> | 2024-07-19 17:06:17 +0200 |
commit | af63b4b769bfb86ff7848af980268901e9c0b47d (patch) | |
tree | d556f4124d2a438ced605dc398a1606f3991086e /shell-completion | |
parent | docs: Document how to do stable releases (diff) | |
download | systemd-af63b4b769bfb86ff7848af980268901e9c0b47d.tar.xz systemd-af63b4b769bfb86ff7848af980268901e9c0b47d.zip |
zsh: add varlinkctl completions
Diffstat (limited to 'shell-completion')
-rw-r--r-- | shell-completion/zsh/_varlinkctl | 52 | ||||
-rw-r--r-- | shell-completion/zsh/meson.build | 1 |
2 files changed, 53 insertions, 0 deletions
diff --git a/shell-completion/zsh/_varlinkctl b/shell-completion/zsh/_varlinkctl new file mode 100644 index 0000000000..720700d04a --- /dev/null +++ b/shell-completion/zsh/_varlinkctl @@ -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' diff --git a/shell-completion/zsh/meson.build b/shell-completion/zsh/meson.build index acbf34e7a8..ea540c765c 100644 --- a/shell-completion/zsh/meson.build +++ b/shell-completion/zsh/meson.build @@ -23,6 +23,7 @@ items = [['_busctl', ''], ['_systemd-run', ''], ['_run0', ''], ['_udevadm', ''], + ['_varlinkctl', ''], ['_kernel-install', 'ENABLE_KERNEL_INSTALL'], ['_sd_hosts_or_user_at_host', ''], ['_sd_outputmodes', ''], |