diff options
Diffstat (limited to 'zsh-completion')
-rw-r--r-- | zsh-completion | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/zsh-completion b/zsh-completion new file mode 100644 index 0000000..f1b7165 --- /dev/null +++ b/zsh-completion @@ -0,0 +1,37 @@ +#compdef rc.d + +_rc.d () { + local curcontext="$curcontext" state line + typeset -A opt_args + + _arguments "1: :->action" "*: :->service" + + case $state in + action) + _arguments "1:action:(list help start stop restart)" + ;; + service) + local action="$words[2]" + curcontext="${curcontext%:*:*}:rc.d-${action}:" + + case $action in + list|help) + _arguments "*: :" + ;; + start) + _arguments "*: :($(comm -23 <(echo /etc/rc.d/*(N-*:t)|tr ' ' '\n') <(echo /run/daemons/*(N:t)|tr ' ' '\n')))" + ;; + stop|restart|reload) + _arguments "*: :(/run/daemons/*(N:t))" + ;; + *) + _arguments "*: :(/etc/rc.d/*(N-*:t))" + ;; + esac + ;; + esac +} + +_rc.d "$@" + +# vim: set ts=2 sw=2 ft=sh noet: |