[systemd-devel] [PATCH] zsh-completion: Move machine listing to autoload

Ronny Chevalier chevalier.ronny at gmail.com
Thu Nov 7 09:15:53 PST 2013


You can do the same with _outputmodes which is used in _systemctl and
_journalctl

2013/11/7 William Giokas <1007380 at gmail.com>:
> 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 at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/systemd-devel


More information about the systemd-devel mailing list