# author: Peter Eisentraut # source: https://gist.github.com/petere/10307599 # compdef kitchen _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 } _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 } _kitchen "$@"