blob: 81ba26a44bd5580216cea85b5abbd9738cad8d0f (
plain) (
blame)
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
|
#compdef sv
_sv_commands() {
local -a sv_ary
sv_ary=(
'status':'get status of service (and log service if available)'
'up':'start if service is running. If service stops, restart'
'down':'send SIGTERM and SIGCONT if service is running. After it stops, do not restart'
'once':'start if service is not running. Do not restart if it stops'
'pause':'send SIGSTOP if service is running'
'cont':'send SIGCONT if service is running'
'hup':'send SIGHUP if service is running'
'alarm':'send SIGALRM if service is running'
'interrupt':'send SIGINT if service is running'
'quit':'send SIGQUIT if service is running'
'1':'send SIGUSR1 if service is running'
'2':'send SIGUSR2 if service is running'
'term':'send SIGTERM if service is running'
'kill':'send SIGKILL if service is running'
'exit':'send SIGTERM and SIGCONT if service is running. Do not restart service.'
)
_describe -t commands "sv commands" sv_ary -V sv_commands
}
_sv_lsb() {
local -a sv_lsb_ary
sv_lsb_ary=(
'start':'up with check/timeout'
'stop':'down with check/timeout'
'reload':'hup with check'
'restart':'down and up with check'
'shutdown':'exit with check/timeout'
'force-stop':'stop with kill on timeout'
'force-reload':'reload with kill on timeout'
'force-restart':'restart with kill on timeout'
'force-shutdown':'shutdown with kill on timeout'
'try-restart':'restart if service is already running'
)
_describe -t lsb-commands "sv LSM init compat" sv_lsb_ary -V sv_init_compat
}
_sv_additional() {
_describe -t additional-commands "sv additional commands" '("check:check status of service")' -V sv_addl_comm
}
local curcontext="$curcontext" state line
_arguments -C \
'-v[verbose]' \
'-w[wait time]:time (seconds)' \
'1: :->command' \
'*:: :->options'
case $state in
(command)
_alternative \
_sv_commands \
_sv_lsb \
_sv_additional
;;
(options)
local -a sv_services
local svdir=${SVDIR:-/etc/service}
sv_services=(
$svdir/*(N)
$svdir/*/log(N)
)
sv_services=( ${sv_services#$svdir/} )
_describe -t services "sv services" sv_services
;;
esac
|