bash-completion: timedatectl: suggests hostname and machine name
authorYu Watanabe <watanabe.yu+github@gmail.com>
Wed, 10 Jan 2018 14:03:26 +0000 (23:03 +0900)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Wed, 10 Jan 2018 14:21:26 +0000 (23:21 +0900)
shell-completion/bash/timedatectl

index b9d0081..13b99f2 100644 (file)
@@ -25,16 +25,24 @@ __contains_word () {
         done
 }
 
+__get_machines() {
+        local a b
+        machinectl list --no-legend --no-pager | { while read a b; do echo " $a"; done; };
+}
+
 _timedatectl() {
         local i verb comps
         local cur=${COMP_WORDS[COMP_CWORD]} prev=${COMP_WORDS[COMP_CWORD-1]}
         local OPTS='-h --help --version --adjust-system-clock --no-pager
-                    --no-ask-password -H --host --machine'
+                    --no-ask-password -H --host -M --machine'
 
         if __contains_word "$prev" $OPTS; then
                 case $prev in
                         --host|-H)
-                                comps=''
+                                comps=$(compgen -A hostname)
+                        ;;
+                        --machine|-M)
+                                comps=$( __get_machines )
                         ;;
                 esac
                 COMPREPLY=( $(compgen -W '$comps' -- "$cur") )
@@ -48,7 +56,7 @@ _timedatectl() {
 
         local -A VERBS=(
                   [BOOLEAN]='set-local-rtc set-ntp'
-               [STANDALONE]='status set-time list-timezones'
+               [STANDALONE]='status list-timezones'
                 [TIMEZONES]='set-timezone'
                      [TIME]='set-time'
         )