mirror of
git://git.code.sf.net/p/zsh/code
synced 2025-01-21 00:01:26 +01:00
22434: completion for vserver.
This commit is contained in:
parent
903e3251fc
commit
f52938607d
2 changed files with 136 additions and 0 deletions
|
@ -1,3 +1,8 @@
|
|||
2006-04-28 Clint Adams <clint@zsh.org>
|
||||
|
||||
* 22434, intrigeri@boum.org:
|
||||
Completion/Linux/Command/_vserver: completion for vserver.
|
||||
|
||||
2006-04-26 Clint Adams <clint@zsh.org>
|
||||
|
||||
* 22433, R. Ramkumar: Completion/Unix/Command/_mpc:
|
||||
|
|
131
Completion/Linux/Command/_vserver
Normal file
131
Completion/Linux/Command/_vserver
Normal file
|
@ -0,0 +1,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=( $(ls -d $_cache_vserver_cfgdir/*/ | sed -e s,$_cache_vserver_cfgdir,, | tr -d '/') )
|
||||
_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 "$@"
|
Loading…
Reference in a new issue