#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
