From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 15545 invoked from network); 28 Apr 2006 18:35:17 -0000 X-Spam-Checker-Version: SpamAssassin 3.1.1 (2006-03-10) on f.primenet.com.au X-Spam-Level: X-Spam-Status: No, score=-2.5 required=5.0 tests=AWL,BAYES_00, FORGED_RCVD_HELO autolearn=ham version=3.1.1 Received: from news.dotsrc.org (HELO a.mx.sunsite.dk) (130.225.247.88) by ns1.primenet.com.au with SMTP; 28 Apr 2006 18:35:17 -0000 Received: (qmail 1775 invoked from network); 28 Apr 2006 18:35:09 -0000 Received: from sunsite.dk (130.225.247.90) by a.mx.sunsite.dk with SMTP; 28 Apr 2006 18:35:09 -0000 Received: (qmail 26464 invoked by alias); 28 Apr 2006 18:35:06 -0000 Mailing-List: contact zsh-workers-help@sunsite.dk; run by ezmlm Precedence: bulk X-No-Archive: yes X-Seq: 22434 Received: (qmail 26455 invoked from network); 28 Apr 2006 18:35:05 -0000 Received: from news.dotsrc.org (HELO a.mx.sunsite.dk) (130.225.247.88) by sunsite.dk with SMTP; 28 Apr 2006 18:35:05 -0000 Received: (qmail 1244 invoked from network); 28 Apr 2006 18:35:05 -0000 Received: from acolyte.scowler.net (216.254.112.45) by a.mx.sunsite.dk with SMTP; 28 Apr 2006 18:35:04 -0000 Received: by acolyte.scowler.net (Postfix, from userid 1000) id 914A270059; Fri, 28 Apr 2006 14:35:00 -0400 (EDT) Date: Fri, 28 Apr 2006 14:35:00 -0400 From: Clint Adams To: zsh-workers@sunsite.dk Subject: PATCH: _vserver Message-ID: <20060428183500.GA23634@scowler.net> Mail-Followup-To: zsh-workers@sunsite.dk MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.5.11+cvs20060403 _vserver from intrigeri@boum.org via Micah Anderson. Index: Completion/Linux/Command/_vserver =================================================================== RCS file: Completion/Linux/Command/_vserver diff -N Completion/Linux/Command/_vserver --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ Completion/Linux/Command/_vserver 28 Apr 2006 18:32:53 -0000 @@ -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 "$@"