aboutsummaryrefslogtreecommitdiff
path: root/zsh-completion
diff options
context:
space:
mode:
authorWilliam Hubbs <w.d.hubbs@gmail.com>2017-12-07 11:30:32 -0600
committerWilliam Hubbs <w.d.hubbs@gmail.com>2017-12-07 11:30:32 -0600
commit6c456f9383ab0000527b4363bc82fc17850aba18 (patch)
treea481adfeaf5db2dd56c3b87538f1269ad68ef1d2 /zsh-completion
parentd220fc272337b216bff6ac781a7b6be4e6f3caee (diff)
Add zsh-completion support
Diffstat (limited to 'zsh-completion')
-rw-r--r--zsh-completion/Makefile10
-rw-r--r--zsh-completion/_openrc7
-rw-r--r--zsh-completion/_rc-service27
-rw-r--r--zsh-completion/_rc-status18
-rw-r--r--zsh-completion/_rc-update31
5 files changed, 93 insertions, 0 deletions
diff --git a/zsh-completion/Makefile b/zsh-completion/Makefile
new file mode 100644
index 00000000..9654dbb4
--- /dev/null
+++ b/zsh-completion/Makefile
@@ -0,0 +1,10 @@
+DIR= ${ZSHCOMPDIR}
+CONF= _openrc \
+ _rc-service \
+ _rc-status \
+ _rc-update \
+
+MK= ../mk
+include ${MK}/os.mk
+
+include ${MK}/scripts.mk
diff --git a/zsh-completion/_openrc b/zsh-completion/_openrc
new file mode 100644
index 00000000..3336b44b
--- /dev/null
+++ b/zsh-completion/_openrc
@@ -0,0 +1,7 @@
+#compdef openrc
+
+if (( CURRENT == 2 )); then
+ _values "runlevels" $(rc-status --list)
+fi
+
+# vim: set et sw=2 ts=2 ft=zsh:
diff --git a/zsh-completion/_rc-service b/zsh-completion/_rc-service
new file mode 100644
index 00000000..25c6b4c5
--- /dev/null
+++ b/zsh-completion/_rc-service
@@ -0,0 +1,27 @@
+#compdef rc-service
+
+if (( CURRENT == 2 )); then
+ _arguments -s \
+ '(-e --exists)'{-e,--exists}"[tests if the service exists or not]" \
+ '(-l --list)'{-l,--list}'[list all available services]' \
+ '(-r --resolve)'{-r,--resolve}'[resolve the service name to an init script]' \
+ '(-C --nocolor)'{-C,--nocolor}'[Disable color output]' \
+ '(-v --verbose)'{-v,--verbose}'[Run verbosely]' \
+ '(-q --quiet)'{-q,--quiet}'[Run quietly]'
+ _values "service" $(rc-service --list)
+else
+ case $words[2] in
+ -e|--exists|-r|--resolve)
+ (( CURRENT > 3 )) && return 0
+ _values "service" $(rc-service --list)
+ ;;
+ -*)
+ return 0
+ ;;
+ *)
+ _values "action" stop start restart describe zap
+ ;;
+ esac
+fi
+
+# vim: set et sw=2 ts=2 ft=zsh:
diff --git a/zsh-completion/_rc-status b/zsh-completion/_rc-status
new file mode 100644
index 00000000..fd35e9cd
--- /dev/null
+++ b/zsh-completion/_rc-status
@@ -0,0 +1,18 @@
+#compdef rc-status
+
+_arguments -s \
+ {'(--all)-a','(-a)--all'}'[Show services at all runlevels]' \
+ {'(--crashed)-c','(-c)--crashed'}'[Show crashed services]' \
+ {'(--list)-l','(-l)--list'}'[Show list of runlevels]' \
+ {'(--runlevel)-r','(-r)--runlevel'}'[Show the name of the current runlevel]' \
+ {'(--servicelist)-s','(-s)--servicelist'}'[Show all services]' \
+ {'(--unused)-u','(-u)--unused'}'[Show services not assigned to any run level]' \
+ {'(--help)-h','(-h)--help'}'[Print this help output]' \
+ {'(--nocolor)-C','(-C)--nocolor'}'[Disable color output]' \
+ {'(--version)-V','(-V)--version'}'[Display software version]' \
+ {'(--verbose)-v','(-v)--verbose'}'[Run verbosely]' \
+ {'(--quiet)-q','(-q)--quiet'}'[Run quietly (Does not affect errors)]'
+
+_values 'runlevels' $(rc-status --list)
+
+# vim: set et sw=2 ts=2 ft=zsh:
diff --git a/zsh-completion/_rc-update b/zsh-completion/_rc-update
new file mode 100644
index 00000000..5bd3c85c
--- /dev/null
+++ b/zsh-completion/_rc-update
@@ -0,0 +1,31 @@
+#compdef rc-update
+
+local used_init
+used_init=(${=${(M)${(f)"$(rc-update show 2>/dev/null)"}:#*|*[a-z]*}% |*})
+
+if (( CURRENT == 2 )); then
+ _values "rc-update actions" \
+ 'add[Add script to a runlevel]' \
+ 'del[Delete script from a runlevel]' \
+ 'show[Show scripts in a runlevel]' \
+ '-a[Process all runlevels]' \
+ '-s[Stack a runlevel instead of a service]'
+elif (( CURRENT == 3 )); then
+ case "$words[2]" in
+ add)
+ _values "service" $(rc-service --list)
+ ;;
+ del)
+ _values "service" $used_init
+ ;;
+ show)
+ _values "runlevels" $(rc-status --list) \
+ '-v[Show all service scripts]' \
+ '--verbose[Show all service scripts]'
+ ;;
+ esac
+elif (( CURRENT == 4 )); then
+ _values "runlevels" $(rc-status --list)
+fi
+
+# vim: set et sw=2 ts=2 ft=zsh: