chiark / gitweb /
update bash completion for systemd-analyze
authorThomas Hindoe Paaboel Andersen <phomes@gmail.com>
Mon, 3 Mar 2014 21:01:42 +0000 (22:01 +0100)
committerThomas Hindoe Paaboel Andersen <phomes@gmail.com>
Mon, 3 Mar 2014 21:18:32 +0000 (22:18 +0100)
shell-completion/bash/systemd-analyze

index 6afcd963c33f3cc9598410df8b8c1445a4e646f1..5575bebfc45c1148fedb62bc12676a4d3b6db19e 100644 (file)
@@ -25,10 +25,19 @@ __contains_word () {
         done
 }
 
+__get_machines() {
+        local a b
+        machinectl list --no-legend --no-pager | { while read a b; do echo " $a"; done; };
+}
+
 _systemd_analyze() {
         local i verb comps
         local cur=${COMP_WORDS[COMP_CWORD]} prev=${COMP_WORDS[COMP_CWORD-1]}
-        local OPTS='--help --version --system --user --from-pattern --to-pattern --order --require'
+
+        local -A OPTS=(
+               [STANDALONE]='--help --version --system --user --from-pattern --to-pattern --order --require --no-pager'
+                      [ARG]='-H --host -M --machine'
+        )
 
         local -A VERBS=(
                 [STANDALONE]='time blame plot dump'
@@ -47,6 +56,19 @@ _systemd_analyze() {
                 fi
         done
 
+        if __contains_word "$prev" ${OPTS[ARG]}; then
+                case $prev in
+                        --host|-H)
+                                comps=$(compgen -A hostname)
+                        ;;
+                        --machine|-M)
+                                comps=$( __get_machines )
+                        ;;
+                esac
+                COMPREPLY=( $(compgen -W '$comps' -- "$cur") )
+                return 0
+        fi
+
         if [[ -z $verb  && $cur = -* ]]; then
                 COMPREPLY=( $(compgen -W '${OPTS[*]}' -- "$cur") )
                 return 0