mirror of
				git://git.code.sf.net/p/zsh/code
				synced 2025-11-04 07:21:06 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			131 lines
		
	
	
	
		
			3 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			131 lines
		
	
	
	
		
			3 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
#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 "$@"
 |