chiark / gitweb /
shell-completion: Add machinectl zsh completion
authorWilliam Giokas <1007380@gmail.com>
Wed, 24 Jul 2013 02:55:22 +0000 (21:55 -0500)
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Wed, 24 Jul 2013 13:11:36 +0000 (09:11 -0400)
shell-completion/systemd-zsh-completion.zsh

index c85e00e..b62b6df 100644 (file)
@@ -1,4 +1,4 @@
-#compdef systemctl loginctl journalctl hostnamectl localectl timedatectl systemd-coredumpctl udevadm systemd-analyze systemd-cat systemd-ask-password systemd-cgls systemd-cgtop systemd-delta systemd-detect-virt systemd-inhibit systemd-machine-id-setup systemd-notify systemd-nspawn systemd-tmpfiles systemd-tty-ask-password-agent
+#compdef systemctl loginctl journalctl hostnamectl localectl timedatectl systemd-coredumpctl udevadm systemd-analyze systemd-cat systemd-ask-password systemd-cgls systemd-cgtop systemd-delta systemd-detect-virt systemd-inhibit systemd-machine-id-setup systemd-notify systemd-nspawn systemd-tmpfiles systemd-tty-ask-password-agent machinectl
 
 _ctls()
 {
@@ -263,6 +263,21 @@ _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
 }
@@ -916,6 +931,38 @@ _systemd-coredumpctl_command(){
 
 }
 
+(( $+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
+}
+
 _udevadm_info(){
     _arguments \
         '--query=[Query the database for specified type of device data. It needs the --path or --name to identify the specified device.]:type:(name symlink path property all)' \