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

William Giokas 1007380 at gmail.com
Thu Nov 7 07:43:18 PST 2013


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



More information about the systemd-devel mailing list