chiark / gitweb /
bash-completion: use improved filtering to make things faster
authorZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Thu, 30 Oct 2014 03:06:58 +0000 (23:06 -0400)
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Thu, 30 Oct 2014 03:48:10 +0000 (23:48 -0400)
shell-completion/bash/systemctl.in

index 9e538a9..9e98a18 100644 (file)
@@ -60,14 +60,20 @@ __get_active_units   () { __systemctl $1 list-units       \
         | { while read -r a b; do echo " $a"; done; }; }
 __get_startable_units () {
         # find startable inactive units
-        __filter_units_by_property $mode LoadState loaded $(
-            __filter_units_by_property $mode ActiveState inactive $(
-                __filter_units_by_property $mode CanStart yes $( __get_all_units )))
+        __filter_units_by_property $mode ActiveState inactive $(
+            __filter_units_by_property $mode CanStart yes $(
+                __systemctl $mode list-unit-files --state enabled,disabled,static | \
+                    { while read -r a b; do [[ $a =~ @\. ]] || echo " $a"; done; }
+                __systemctl $mode list-units --state inactive,failed | \
+                    { while read -r a b; do echo " $a"; done; } ))
 }
 __get_restartable_units () {
         # filter out masked and not-found
-        __filter_units_by_property $mode LoadState loaded $(
-            __filter_units_by_property $mode CanStart yes $( __get_all_units ))
+        __filter_units_by_property $mode CanStart yes $(
+            __systemctl $mode list-unit-files --state enabled,disabled,static | \
+                    { while read -r a b; do [[ $a =~ @\. ]] || echo " $a"; done; }
+            __systemctl $mode list-units | \
+                    { while read -r a b; do echo " $a"; done; } )
 }
 __get_failed_units   () { __systemctl $1 list-units       \
         | { while read -r a b c d; do [[ $c == "failed"   ]] && echo " $a"; done; }; }