#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:
