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 systemd-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/systemd-devel