You can do the same with _outputmodes which is used in _systemctl and _journalctl
2013/11/7 William Giokas <[email protected]>: > Instead of having two different listings of machines, use an autoloaded > function that can be used by other shell completions in the future. It > will also allow editing a single file to change the way machinectl and > systemd-run completion for machines. > --- > > An extension of the previous zsh completion patch from Ronny Chevalier. > > shell-completion/zsh/_machinectl | 7 +------ > shell-completion/zsh/_sd_machines | 13 +++++++++++++ > shell-completion/zsh/_systemd-run | 17 +---------------- > 3 files changed, 15 insertions(+), 22 deletions(-) > create mode 100644 shell-completion/zsh/_sd_machines > > diff --git a/shell-completion/zsh/_machinectl > b/shell-completion/zsh/_machinectl > index 2e5e05c..026d74f 100644 > --- a/shell-completion/zsh/_machinectl > +++ b/shell-completion/zsh/_machinectl > @@ -19,12 +19,7 @@ > case $cmd in > list) msg="no options" ;; > *) > - _machines=( "${(foa)$(machinectl list | awk '{print $1}')}" ) > - if [[ -n "$_machines" ]]; then > - _describe 'machines' _machines > - else > - _message 'no machines' > - fi > + _sd_machines > esac > else > _message "no more options" > diff --git a/shell-completion/zsh/_sd_machines > b/shell-completion/zsh/_sd_machines > new file mode 100644 > index 0000000..1d64d13 > --- /dev/null > +++ b/shell-completion/zsh/_sd_machines > @@ -0,0 +1,13 @@ > +#autoload > +__get_machines () { > + machinectl --full --no-pager list | {while read -r a b; do echo $a; > done;}; > +} > + > +local -a _machines > +_machines=("${(fo)$(__get_machines)}") > +typeset -U _machines > +if [[ -n "$_machines" ]]; then > + _describe 'machines' _machines > +else > + _message 'no machines' > +fi > diff --git a/shell-completion/zsh/_systemd-run > b/shell-completion/zsh/_systemd-run > index 4bfbd19..9bb7700 100644 > --- a/shell-completion/zsh/_systemd-run > +++ b/shell-completion/zsh/_systemd-run > @@ -18,27 +18,12 @@ __slices () { > _describe 'slices' _slices > } > > -__get_machines () { > - machinectl --full --no-pager list | {while read -r a b; do echo $a; > done;}; > -} > - > -__machines () { > - local -a _machines > - _machines=("${(fo)$(__get_machines)}") > - typeset -U _machines > - if [[ -n "$_machines" ]]; then > - _describe 'machines' _machines > - else > - _message 'no machines' > - fi > -} > - > _arguments \ > {-h,--help}'[Show help message]' \ > '--version[Show package version]' \ > '--user[Run as user unit]' \ > {-H+,--host=}'[Operate on remote > host]:[user@]host:_sd_hosts_or_user_at_host' \ > - {-M+,--machine=}'[Operate on local container]:machines:__machines' \ > + {-M+,--machine=}'[Operate on local container]:machines:_sd_machines' > \ > '--scope[Run this as scope rather than service]' \ > '--unit=[Run under the specified unit name]:unit name' \ > '--description=[Description for unit]:description' \ > -- > 1.8.5.rc0 > > _______________________________________________ > systemd-devel mailing list > [email protected] > http://lists.freedesktop.org/mailman/listinfo/systemd-devel _______________________________________________ systemd-devel mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/systemd-devel
