---
 Makefile.am                       |  3 +++
 shell-completion/zsh/_hostnamectl | 38 ++++++++++++++++++++++++++++++++++++++
 shell-completion/zsh/_systemd     | 34 +---------------------------------
 3 files changed, 42 insertions(+), 33 deletions(-)
 create mode 100644 shell-completion/zsh/_hostnamectl

diff --git a/Makefile.am b/Makefile.am
index 9fa7944..ba40350 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -3363,6 +3363,9 @@ bin_PROGRAMS += \
 dist_bashcompletion_DATA += \
        shell-completion/bash/hostnamectl
 
+dist_zshcompletion_DATA += \
+       shell-completion/zsh/_hostnamectl
+
 endif
 
 polkitpolicy_in_files += \
diff --git a/shell-completion/zsh/_hostnamectl 
b/shell-completion/zsh/_hostnamectl
new file mode 100644
index 0000000..bc4441d
--- /dev/null
+++ b/shell-completion/zsh/_hostnamectl
@@ -0,0 +1,38 @@
+#compdef hostnamectl
+
+_hosts_or_user_at_host() {
+  _alternative \
+    'users-hosts:: _user_at_host' \
+    'hosts:: _hosts'
+}
+
+_hostnamectl_command() {
+    local -a _hostnamectl_cmds
+    _hostnamectl_cmds=(
+        "status:Show current hostname settings"
+        "set-hostname:Set system hostname"
+        "set-icon-name:Set icon name for host"
+    )
+    if (( CURRENT == 1 )); then
+        _describe -t commands 'hostnamectl commands' _hostnamectl_cmds || 
compadd "$@"
+    else
+        local curcontext="$curcontext"
+        cmd="${${_hostnamectl_cmds[(r)$words[1]:*]%%:*}}"
+        if (( $#cmd )); then
+            [[ $cmd == status ]] && msg="no options" || msg="options for $cmd"
+            _message "$msg"
+        else
+            _message "unknown hostnamectl command: $words[1]"
+        fi
+    fi
+}
+
+_arguments -s \
+    {-h,--help}'[Show this help]' \
+    '--version[Show package version]' \
+    '--transient[Only set transient hostname]' \
+    '--static[Only set static hostname]' \
+    '--pretty[Only set pretty hostname]' \
+    '--no-ask-password[Do not prompt for password]' \
+    {-H,--host=}'[Operate on remote host]:userathost:_hosts_or_user_at_host' \
+    '*::hostnamectl commands:_hostnamectl_command'
diff --git a/shell-completion/zsh/_systemd b/shell-completion/zsh/_systemd
index 80a14ac..ce7ea1a 100644
--- a/shell-completion/zsh/_systemd
+++ b/shell-completion/zsh/_systemd
@@ -1,20 +1,9 @@
-#compdef 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
+#compdef journalctl 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()
 {
     local curcontext="$curcontext" state lstate line
     case "$service" in
-        hostnamectl)
-            _arguments -s \
-                {-h,--help}'[Show this help]' \
-                '--version[Show package version]' \
-                '--transient[Only set transient hostname]' \
-                '--static[Only set static hostname]' \
-                '--pretty[Only set pretty hostname]' \
-                '--no-ask-password[Do not prompt for password]' \
-                {-H,--host=}'[Operate on remote 
host]:userathost:_hosts_or_user_at_host' \
-                '*::hostnamectl commands:_hostnamectl_command'
-        ;;
         journalctl)
             _arguments -s \
                 '--since=[Start showing entries newer or of the specified 
date]:YYYY-MM-DD HH\:MM\:SS' \
@@ -323,27 +312,6 @@ _journal_fields() {
     _describe 'possible values' _fields
 }
 
-_hostnamectl_command() {
-    local -a _hostnamectl_cmds
-    _hostnamectl_cmds=(
-        "status:Show current hostname settings"
-        "set-hostname:Set system hostname"
-        "set-icon-name:Set icon name for host"
-    )
-    if (( CURRENT == 1 )); then
-        _describe -t commands 'hostnamectl commands' _hostnamectl_cmds || 
compadd "$@"
-    else
-        local curcontext="$curcontext"
-        cmd="${${_hostnamectl_cmds[(r)$words[1]:*]%%:*}}"
-        if (( $#cmd )); then
-            [[ $cmd == status ]] && msg="no options" || msg="options for $cmd"
-            _message "$msg"
-        else
-            _message "unknown hostnamectl command: $words[1]"
-        fi
-    fi
-}
-
 _localectl_set-locale() {
     local -a _confs _locales
     local expl suf
-- 
1.8.4.rc0.352.g531e8cb

_______________________________________________
systemd-devel mailing list
systemd-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/systemd-devel

Reply via email to