aboutsummaryrefslogtreecommitdiff
blob: f467f1a5991146434b70d650e581435d40791a44 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
#compdef rc-update rc-status rc rc-service

# openrc-0.12.4

local gentoo_runlevels
gentoo_runlevels=(/etc/runlevels/*(:t))

case "$service" in
  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" /etc/init.d/*~*.sh(:t)
    else
      case $words[2] in
        -e|--exists|-r|--resolve)
          (( CURRENT > 3 )) && return 0
          _values "service" /etc/init.d/*~*.sh(:t)
          ;;
        -*)
          return 0
          ;;
        *)
          _values "action" stop start restart describe zap
          ;;
      esac
    fi
    ;;
  rc-update)
    local used_init
    used_init=(${=${(M)${(f)"$(/sbin/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 lanched at a runlevel]' \
        '-a[Add script to a runlevel]' \
        '-d[Delete script from a runlevel]' \
        '-s[Show scripts lanched at a runlevel]'
    elif (( CURRENT == 3 )); then
      case "$words[2]" in
        add|-a)
          _values "service" /etc/init.d/*~*.sh(:t)
          ;;
        del|-d)
          _values "service" $used_init
          ;;
        show|-s)
          _values "runlevels" $gentoo_runlevels \
            '-v[Show all init scripts]' \
            '--verbose[Show all init scripts]'
          ;;
      esac
    elif (( CURRENT == 4 )); then
      _values "runlevels" $gentoo_runlevels
    fi
    ;;
  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' $gentoo_runlevels
    ;;
  rc)
    if (( CURRENT == 2 )); then
      _values "runlevels" $gentoo_runlevels
    fi
    ;;
esac

# vim: set et sw=2 ts=2 ft=zsh: