chiark / gitweb /
login: set_controller should fail if prepare_vt fails
[elogind.git] / shell-completion / zsh / _hostnamectl
index bc4441d..e02f6de 100644 (file)
@@ -1,9 +1,36 @@
 #compdef hostnamectl
 
-_hosts_or_user_at_host() {
-  _alternative \
-    'users-hosts:: _user_at_host' \
-    'hosts:: _hosts'
+_hostnamectl_set-hostname() {
+    if (( CURRENT <= 3 )); then
+        _message "new hostname"
+    else
+        _message "no more options"
+    fi
+}
+
+_hostnamectl_set-icon-name() {
+    if (( CURRENT <= 3 )); then
+        _message "new icon name"
+    else
+        _message "no more options"
+    fi
+}
+
+_hostnamectl_set-chassis() {
+    if (( CURRENT <= 3 )); then
+        _chassis=( desktop laptop server tablet handset watch vm container )
+        _describe chassis _chassis
+    else
+        _message "no more options"
+    fi
+}
+
+_hostnamectl_set-deployment() {
+    if (( CURRENT <= 3 )); then
+        _message "new environment"
+    else
+        _message "no more options"
+    fi
 }
 
 _hostnamectl_command() {
@@ -12,6 +39,8 @@ _hostnamectl_command() {
         "status:Show current hostname settings"
         "set-hostname:Set system hostname"
         "set-icon-name:Set icon name for host"
+        "set-chassis:Set chassis type for host"
+        "set-deployment:Set deployment environment"
     )
     if (( CURRENT == 1 )); then
         _describe -t commands 'hostnamectl commands' _hostnamectl_cmds || compadd "$@"
@@ -19,8 +48,11 @@ _hostnamectl_command() {
         local curcontext="$curcontext"
         cmd="${${_hostnamectl_cmds[(r)$words[1]:*]%%:*}}"
         if (( $#cmd )); then
-            [[ $cmd == status ]] && msg="no options" || msg="options for $cmd"
-            _message "$msg"
+            if [[ $cmd == status ]]; then
+                _message "no options"
+            else
+                _hostnamectl_$cmd
+            fi
         else
             _message "unknown hostnamectl command: $words[1]"
         fi
@@ -34,5 +66,5 @@ _arguments -s \
     '--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' \
+    {-H+,--host=}'[Operate on remote host]:userathost:_sd_hosts_or_user_at_host' \
     '*::hostnamectl commands:_hostnamectl_command'