chiark / gitweb /
shell-completion: show failed units as candidates for start
authorZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Wed, 10 Apr 2013 23:31:58 +0000 (19:31 -0400)
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Wed, 10 Apr 2013 23:47:21 +0000 (19:47 -0400)
Also show disabled units as candidates for reenable,
since it works and one may want to do enable-or-reenable
in one line.

TODO
shell-completion/bash/systemctl
shell-completion/systemd-zsh-completion.zsh

diff --git a/TODO b/TODO
index 369fb78..0e58468 100644 (file)
--- a/TODO
+++ b/TODO
@@ -1,6 +1,5 @@
 Bugfixes:
-* systemctl completion doesn't want to start failed systemd-tmpfiles-setup.service
-  systemctl --system show -p Fr<TAB> default.target doesn't show anything
+* systemctl --system show -p Fr<TAB> default.target doesn't show anything
 
 * check systemd-tmpfiles for selinux context hookup for mknod(), symlink() and similar
 
index b019d6a..aba76f6 100644 (file)
@@ -46,7 +46,7 @@ __get_all_units      () { __systemctl $1 list-units --all \
 __get_active_units   () { __systemctl $1 list-units       \
         | { while read -r a b; do echo " $a"; done; }; }
 __get_inactive_units () { __systemctl $1 list-units --all \
-        | { while read -r a b c d; do [[ $c == "inactive" ]] && echo " $a"; done; }; }
+        | { while read -r a b c d; do [[ $c == "inactive" || $c == "failed " ]] && echo " $a"; done; }; }
 __get_failed_units   () { __systemctl $1 list-units       \
         | { while read -r a b c d; do [[ $c == "failed"   ]] && echo " $a"; done; }; }
 __get_enabled_units  () { __systemctl $1 list-unit-files  \
@@ -109,8 +109,9 @@ _systemctl () {
 
         local -A VERBS=(
                 [ALL_UNITS]='is-active is-failed is-enabled status show mask preset'
-            [ENABLED_UNITS]='disable reenable'
+            [ENABLED_UNITS]='disable'
            [DISABLED_UNITS]='enable'
+        [REENABLABLE_UNITS]='reenable'
              [FAILED_UNITS]='reset-failed'
           [STARTABLE_UNITS]='start'
           [STOPPABLE_UNITS]='stop condstop kill try-restart condrestart'
@@ -149,6 +150,10 @@ _systemctl () {
         elif __contains_word "$verb" ${VERBS[DISABLED_UNITS]}; then
                 comps=$( __get_disabled_units $mode )
 
+        elif __contains_word "$verb" ${VERBS[REENABLABLE_UNITS]}; then
+                comps=$( __get_disabled_units $mode;
+                         __get_enabled_units $mode )
+
         elif __contains_word "$verb" ${VERBS[STARTABLE_UNITS]}; then
                 comps=$( __filter_units_by_property $mode CanStart yes \
                       $( __get_inactive_units $mode \
index 52a5fdb..a54e9d7 100644 (file)
@@ -455,7 +455,7 @@ _filter_units_by_property() {
 }
 
 _systemctl_active_units()  {_sys_active_units=(  $(__systemctl list-units          | { while read a b; do echo " $a"; done; }) )}
-_systemctl_inactive_units(){_sys_inactive_units=($(__systemctl list-units --all    | { while read a b c d; do [[ $c == "inactive" ]] && echo " $a"; done; }) )}
+_systemctl_inactive_units(){_sys_inactive_units=($(__systemctl list-units --all    | { while read a b c d; do [[ $c == "inactive" || $c == "failed" ]] && echo " $a"; done; }) )}
 _systemctl_failed_units()  {_sys_failed_units=(  $(__systemctl list-units --failed | { while read a b; do echo " $a"; done; }) )}
 _systemctl_enabled_units() {_sys_enabled_units=( $(__systemctl list-unit-files     | { while read a b; do [[ $b == "enabled" ]] && echo " $a"; done; }) )}
 _systemctl_disabled_units(){_sys_disabled_units=($(__systemctl list-unit-files     | { while read a b; do [[ $b == "disabled" ]] && echo " $a"; done; }) )}
@@ -475,7 +475,8 @@ for fun in disable reenable ; do
   (( $+functions[_systemctl_$fun] )) || _systemctl_$fun()
   {
     _systemctl_enabled_units
-    compadd "$@" -a - _sys_enabled_units
+    _systemctl_disabled_units
+    compadd "$@" -a - _sys_enabled_units _sys_disabled_units
   }
 done