blob: 36a61c45a3420df3e6ff71e5bd828f33fcb0c647 (
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
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
|
#compdef vserver
_vserver () {
# local variables
local curcontext="$curcontext" state line expl ret=1
local cmd=$words[3]
# dispatch
case "$cmd" in
apt-cache|apt-config|apt-get)
compset -n 3
_dispatch $cmd:t $cmd $cmd:t -default- && ret=0
;;
exec)
_arguments -C \
'1: :->vsnames' \
'2: :->cmds' \
'3:command name: _command_names -e' \
'*::arguments: _normal' && ret=0
;;
stop|restart|condrestart|enter|running|status)
_arguments -C \
'1: :->vsnames' \
'2: :->cmds' \
'*::arguments: _message "no more arguments"' && ret=0
;;
*)
_arguments -C \
'(-)--help[print help information]' \
'(- *)--version[print client version information]' \
'1: :->vsnames' \
'2: :->cmds' \
'*:: :->args' && ret=0
;;
esac
# cache initialization
if [[ -n "$state" ]]; then
if (( ! $+_cache_vserver_cfgdir )); then
typeset -g _cache_vserver_cfgdir_initialized
_vserver_cache_cfgdir
fi
if (( ! $+_cache_vserver_vsnames )); then
typeset -g _cache_vserver_vsnames_initialized
_vserver_cache_vsnames
fi
if (( ! $+_cache_vserver_cmds )); then
typeset -g _cache_vserver_cmds_initialized
_vserver_cache_cmds
fi
fi
case "$state" in
vsnames)
_wanted commands expl 'vserver name' _vserver_vsnames && ret=0
;;
cmds)
_wanted commands expl 'vserver command' _vserver_commands && ret=0
;;
args)
local args
if $+args; then
_arguments "$args[@]" && ret=0
else
ret=0
fi
;;
esac
return ret
}
(( $+functions[_vserver_commands] )) ||
_vserver_commands() {
compadd "$@" -k _cache_vserver_cmds || compadd "$@" ${(s.:.)_cache_vserver_cmds}
}
(( $+functions[_svk_list_patches] )) ||
_vserver_vsnames() {
local expl
_wanted vserver expl 'vserver name' compadd -S '' $_cache_vserver_vsnames[@]
}
(( $+functions[_vserver_cache_cfgdir] )) ||
_vserver_cache_cfgdir() {
if [[ "$_cache_vserver_cfgdir_initialized" != true ]]; then
typeset -ga _cache_vserver_cfgdir
_cache_vserver_cfgdir=`vserver-info info SYSINFO | grep '^ *cfg-Directory' | awk '{print $2}'`
_cache_vserver_cfgdir_initialized=true
fi
}
(( $+functions[_vserver_cache_vsnames] )) ||
_vserver_cache_vsnames() {
if [[ "$_cache_vserver_vsnames_initialized" != true ]]; then
typeset -ga _cache_vserver_vsnames
_cache_vserver_vsnames=( $_cache_vserver_cfgdir/*(/:t) )
_cache_vserver_vsnames_initialized=true
fi
}
(( $+functions[_vserver_cache_cmds] )) ||
_vserver_cache_cmds() {
if [[ "$_cache_vserver_cmds_initialized" != true ]]; then
typeset -ga _cache_vserver_cmds
_cache_vserver_cmds=(
start
stop
restart
condrestart
suexec
exec
enter
chkconfig
running
status
build
unify
pkg
apt-get
apt-config
apt-cache
rpm
pkgmgmt
)
_cache_vserver_cmds_initialized=true
fi
}
_vserver "$@"
|