zsh-completion: _rc-service fix flag/command combinations

- handle `rc-service -<flag> <service> <action>` correctly

This is for #285.
This commit is contained in:
Felix Neumärker 2019-01-18 23:18:02 +01:00 committed by William Hubbs
parent 50d77a4e5d
commit 77f09900a2

View File

@ -1,27 +1,32 @@
#compdef rc-service #compdef rc-service
if (( CURRENT == 2 )); then _rc_services() {
_arguments -s \ if [[ -n "${opt_args[(i)-l|--list]}" ]]; then
'(-e --exists)'{-e,--exists}"[tests if the service exists or not]" \ _nothing
else
_values 'service' $(rc-service -l)
fi
}
_rc_actions() {
local service="${line[1]}"
if [[ -n "${opt_args[(i)-e|--exists|-r|--resolve]}" ]] || ! $(rc-service -e $service) ; then
_nothing
else
_values 'action' stop start restart describe zap
fi
}
_arguments -C -s \
'(-e --exists)'{-e,--exists}'[tests if the service exists or not]' \
'(-l --list)'{-l,--list}'[list all available services]' \ '(-l --list)'{-l,--list}'[list all available services]' \
'(-r --resolve)'{-r,--resolve}'[resolve the service name to an init script]' \ '(-r --resolve)'{-r,--resolve}'[resolve the service name to an init script]' \
'(-C --nocolor)'{-C,--nocolor}'[Disable color output]' \ '(-C --nocolor)'{-C,--nocolor}'[Disable color output]' \
'(-v --verbose)'{-v,--verbose}'[Run verbosely]' \ '(-v --verbose)'{-v,--verbose}'[Run verbosely]' \
'(-q --quiet)'{-q,--quiet}'[Run quietly]' '(-q --quiet)'{-q,--quiet}'[Run quietly]' \
_values "service" $(rc-service --list) '1:service:_rc_services' \
else '2:action:_rc_actions'
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: # vim: set et sw=2 ts=2 ft=zsh: