diff options
Diffstat (limited to 'plugins/kitchen/_kitchen')
| -rw-r--r-- | plugins/kitchen/_kitchen | 110 | 
1 files changed, 77 insertions, 33 deletions
diff --git a/plugins/kitchen/_kitchen b/plugins/kitchen/_kitchen index 54105b61a..dee5c5809 100644 --- a/plugins/kitchen/_kitchen +++ b/plugins/kitchen/_kitchen @@ -1,41 +1,85 @@ -# author: Peter Eisentraut -# source: https://gist.github.com/petere/10307599 -# compdef kitchen +#compdef kitchen +# ------------------------------------------------------------------------------ +# Copyright (c) 2014 Github zsh-users - http://github.com/zsh-users +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are met: +#     * Redistributions of source code must retain the above copyright +#       notice, this list of conditions and the following disclaimer. +#     * Redistributions in binary form must reproduce the above copyright +#       notice, this list of conditions and the following disclaimer in the +#       documentation and/or other materials provided with the distribution. +#     * Neither the name of the zsh-users nor the +#       names of its contributors may be used to endorse or promote products +#       derived from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +# DISCLAIMED. IN NO EVENT SHALL ZSH-USERS BE LIABLE FOR ANY +# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# ------------------------------------------------------------------------------ +# Description +# ----------- +# +#  Completion script for Test Kitchen (http://kitchen.ci/). +# +# ------------------------------------------------------------------------------ +# Authors +# ------- +# +#  * Peter Eisentraut (https://github.com/petere) +# +# ------------------------------------------------------------------------------ +  _kitchen() { -	local curcontext="$curcontext" state line -	typeset -A opt_args - -	_arguments '1: :->cmds'\ -	           '2: :->args' - -	case $state in -		cmds) -			_arguments "1:Commands:(console converge create destroy diagnose driver help init list login setup test verify version)" -			;; -		args) -			case $line[1] in -				converge|create|destroy|diagnose|list|setup|test|verify) -					compadd "$@" all -					_kitchen_instances -					;; -				login) -					_kitchen_instances -					;; -			esac -			;; -	esac +  local curcontext="$curcontext" state line +  typeset -A opt_args + +  _arguments '1: :->cmds'\ +             '2: :->args' + +  case $state in +    cmds) +      _kitchen_commands +      ;; +    args) +      case $line[1] in +        converge|create|destroy|diagnose|list|setup|test|verify) +          compadd 'all' +          _kitchen_instances +          ;; +        login) +          _kitchen_instances +          ;; +      esac +      ;; +  esac +} + +_kitchen_commands() { +  local commands + +  commands=("${(@f)$(_call_program commands $service help | sed -n 's/^  kitchen \([[:alpha:]]*\) [ [].*# \(.*\)$/\1:\2/p')}") +  _describe -t commands 'kitchen commands' commands  }  _kitchen_instances() { -	if [[ $_kitchen_instances_cache_dir != $PWD ]]; then -		unset _kitchen_instances_cache -	fi -	if [[ ${+_kitchen_instances_cache} -eq 0 ]]; then -		_kitchen_instances_cache=(${(f)"$(bundle exec kitchen list -b 2>/dev/null || kitchen list -b 2>/dev/null)"}) -		_kitchen_instances_cache_dir=$PWD -	fi -	compadd -a _kitchen_instances_cache +  if [[ $_kitchen_instances_cache_dir != $PWD ]]; then +    unset _kitchen_instances_cache +  fi +  if [[ ${+_kitchen_instances_cache} -eq 0 ]]; then +    _kitchen_instances_cache=(${(f)"$(_call_program instances $service list -b 2>/dev/null)"}) +    _kitchen_instances_cache_dir=$PWD +  fi +  _wanted instances expl 'instance' compadd -a _kitchen_instances_cache  }  _kitchen "$@"  | 
