[systemd-devel] [PATCH 13/16] shell-comp: Split out zsh _machinectl

William Giokas 1007380 at gmail.com
Tue Jul 30 21:22:51 PDT 2013


---
 Makefile.am                      |  3 +++
 shell-completion/zsh/_machinectl | 47 ++++++++++++++++++++++++++++++++++++++
 shell-completion/zsh/_systemd    | 49 +---------------------------------------
 3 files changed, 51 insertions(+), 48 deletions(-)
 create mode 100644 shell-completion/zsh/_machinectl

diff --git a/Makefile.am b/Makefile.am
index 4ac09cf..3713d0d 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -3632,6 +3632,9 @@ dist_dbussystemservice_DATA += \
 dist_dbuspolicy_DATA += \
 	src/machine/org.freedesktop.machine1.conf
 
+dist_zshcompletion_DATA += \
+	shell-completion/zsh/_machinectl
+
 SYSTEM_UNIT_ALIASES += \
 	systemd-machined.service dbus-org.freedesktop.machine1.service
 
diff --git a/shell-completion/zsh/_machinectl b/shell-completion/zsh/_machinectl
new file mode 100644
index 0000000..89196a5
--- /dev/null
+++ b/shell-completion/zsh/_machinectl
@@ -0,0 +1,47 @@
+#compdef machinectl
+
+(( $+functions[_machinectl_command] )) || _machinectl_command()
+{
+  local -a _machinectl_cmds
+  _machinectl_cmds=(
+    "list:List currently running VMs/containers"
+    "status:Show VM/container status"
+    "show:Show properties of one or more VMs/containers"
+    "terminate:Terminate one or more VMs/containers"
+    "kill:Send signal to process or a VM/container"
+  )
+  if (( CURRENT == 1 )); then
+    _describe -t commands 'machinectl command' _machinectl_cmds || compadd "$@"
+  else
+    local curcontext="$curcontext"
+    cmd="${${_machinectl_cmds[(r)$words[1]:*]%%:*}}"
+    if (( $#cmd )); then
+      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
+      esac
+    else
+      _message "no more options"
+    fi
+  fi
+}
+
+_arguments \
+  {-h,--help}'[Prints a short help text and exits.]' \
+  '--version[Prints a short version string and exits.]' \
+  {-p,--property=}'[Limit output to specified property.]:property:(Name Id Timestamp TimestampMonotonic Service Scope Leader Class State RootDirectory)' \
+  {-a,--all}'[Show all proerties]' \
+  (-l,--full)'[Do not ellipsize cgroup members]' \
+  '--no-pager[Do not pipe output into a pager]' \
+  '--no-ask-password[Do not ask for system passwords]' \
+  '--kill-who=[Who to send signal to]:killwho:(leader all)' \
+  {-s,--signal=}'[Which signal to send]:signal:_signals' \
+  {-H,--host=}'[Show information for remote host]:userathost:_hosts_or_user_at_host' \
+  {-P,--privileged}'[Acquire privileges before execution]' \
+  '*::machinectl command:_machinectl_command'
diff --git a/shell-completion/zsh/_systemd b/shell-completion/zsh/_systemd
index d0e1f3d..8eced09 100644
--- a/shell-completion/zsh/_systemd
+++ b/shell-completion/zsh/_systemd
@@ -1,4 +1,4 @@
-#compdef systemd-cat systemd-ask-password systemd-cgls systemd-cgtop systemd-delta systemd-detect-virt systemd-machine-id-setup systemd-notify systemd-tmpfiles systemd-tty-ask-password-agent machinectl
+#compdef systemd-cat systemd-ask-password systemd-cgls systemd-cgtop systemd-delta systemd-detect-virt systemd-machine-id-setup systemd-notify systemd-tmpfiles systemd-tty-ask-password-agent
 
 _ctls()
 {
@@ -98,21 +98,6 @@ _ctls()
                 '--plymouth[Ask question with plymouth(8).]' \
                 '--console[Ask question on /dev/console.]'
         ;;
-        machinectl)
-            _arguments \
-                {-h,--help}'[Prints a short help text and exits.]' \
-                '--version[Prints a short version string and exits.]' \
-                {-p,--property=}'[Limit output to specified property.]:property:(Name Id Timestamp TimestampMonotonic Service Scope Leader Class State RootDirectory)' \
-                {-a,--all}'[Show all proerties]' \
-                (-l,--full)'[Do not ellipsize cgroup members]' \
-                '--no-pager[Do not pipe output into a pager]' \
-                '--no-ask-password[Do not ask for system passwords]' \
-                '--kill-who=[Who to send signal to]:killwho:(leader all)' \
-                {-s,--signal=}'[Which signal to send]:signal:_signals' \
-                {-H,--host=}'[Show information for remote host]:userathost:_hosts_or_user_at_host' \
-                {-P,--privileged}'[Acquire privileges before execution]' \
-                '*::machinectl command:_machinectl_command'
-        ;;
         *) _message 'eh?' ;;
     esac
 }
@@ -130,38 +115,6 @@ _outputmodes() {
     _describe -t output 'output mode' _output_opts || compadd "$@"
 }
 
-(( $+functions[_machinectl_command] )) || _machinectl_command()
-{
-  local -a _machinectl_cmds
-  _machinectl_cmds=(
-    "list:List currently running VMs/containers"
-    "status:Show VM/container status"
-    "show:Show properties of one or more VMs/containers"
-    "terminate:Terminate one or more VMs/containers"
-    "kill:Send signal to process or a VM/container"
-  )
-  if (( CURRENT == 1 )); then
-    _describe -t commands 'machinectl command' _machinectl_cmds || compadd "$@"
-  else
-    local curcontext="$curcontext"
-    cmd="${${_machinectl_cmds[(r)$words[1]:*]%%:*}}"
-    if (( $#cmd )); then
-      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
-      esac
-    else
-      _message "no more options"
-    fi
-  fi
-}
-
 _ctls "$@"
 
 #vim: set ft=zsh sw=4 ts=4 et
-- 
1.8.4.rc0.352.g531e8cb



More information about the systemd-devel mailing list