summarylogtreecommitdiffstats
path: root/_sv
diff options
context:
space:
mode:
Diffstat (limited to '_sv')
-rw-r--r--_sv44
1 files changed, 44 insertions, 0 deletions
diff --git a/_sv b/_sv
new file mode 100644
index 000000000000..8a1de2063678
--- /dev/null
+++ b/_sv
@@ -0,0 +1,44 @@
+#compdef sv
+
+# completion for runit sv(1)
+# Christian Neukirchen <chneukirchen@gmail.com>
+# runit 2.1.1, services in /var/service are completed by default
+
+local ret=1 services
+
+_arguments \
+ '-v[verbose]' \
+ '-w[wait]:seconds' \
+ '1: :->cmds' \
+ '*:: :->args' && ret=0
+
+case $state in
+cmds)
+ _values "sv command" \
+ status \
+ up \
+ down \
+ once \
+ pause cont hup alarm interrupt quit 1 2 term kill \
+ exit
+ # above allow one-character shortcuts, complete these
+ [[ $words[CURRENT] = [sudopchaiq12tke] ]] ||
+ _values "sv command" \
+ start \
+ stop \
+ restart \
+ shutdown \
+ force-stop \
+ force-reload \
+ force-restart \
+ force-shutdown \
+ check
+ ret=0;;
+args)
+ services=( /var/service/*(-/N:t) )
+ (( $#services )) && _values services $services && ret=0
+ [[ $words[CURRENT] = */* ]] && _directories && ret=0
+ ;;
+esac
+
+return $ret