diff --git a/clean_files.txt b/clean_files.txt index 464fd78f..c90c5bb7 100644 --- a/clean_files.txt +++ b/clean_files.txt @@ -32,6 +32,7 @@ themes/powerline # completion/available/cargo.completion.bash completion/available/knife.completion.bash +completion/available/packer.completion.bash completion/available/pipx.completion.bash completion/available/rustup.completion.bash diff --git a/completion/available/packer.completion.bash b/completion/available/packer.completion.bash index fb940c9b..ea4b7b8c 100644 --- a/completion/available/packer.completion.bash +++ b/completion/available/packer.completion.bash @@ -1,163 +1,7 @@ #!/usr/bin/env bash +cite "about-completion" +about-completion "packer completion" -# Packer (http://www.packer.io) bash completion -# -# This script provides bash completion for packer and supports: -# -# - template filename completion (*.json) in cwd -# - support for basic options (i.e.. -debug) -# - support for complex options (i.e. -parallel=[true|false] -# -# The scirpt has been successfully tested with packer-0.6.0 and the -# following OS: -# -# - OS X 10.9 -# - CentOS-6.5 -# - Ubuntu 12.04 Server -# -# The script technically is heavily inspired by the git-completion.bash -# script. Kudos to Shawn O. Pearce and all other -# contributors for the inspiration and especially to the bash-completion -# team in general. -# -# Copyright (c) 2014 IT Services Department, University of Bern -# -# This script is licensed under the MIT License (MIT) -# For licsense details see the LICENSE file included in the repository -# or read the license text at http://opensource.org/licenses/MIT. -# - -# Generates completion reply, appending a space to possible completion words, -# if necessary. -# It accepts 2 arguments though the second is optional: -# 1: List of possible completion words. -# 2: Generate possible completion matches for this word (optional). -__packercomp () -{ - local cur_="${2-$cur}" - - case "$cur_" in - -*=) - ;; - *) - local c i=0 IFS=$' \t\n' - for c in $1; do - if [[ $c == "$cur_"* ]]; then - case $c in - -*=*|*.) ;; - *) c="$c " ;; - esac - COMPREPLY[i++]="$c" - fi - done - ;; - esac -} - -# Generates completion reply for template files in cwd. -__packercomp_template_file () -{ - local IFS=$'\n' - - COMPREPLY=($(compgen -S " " -A file -X '!*.json' -- "${cur}")) -} - -# Generates completion for the build command. -__packer_build () -{ - local builders=" - amazon-ebs amazon-instance amazon-chroot digitalocean docker - googlecompute openstack parallels-iso parallels-pvm qemu - virtualbox-iso virtualbox-ovf vmware-iso vmware-vmx" - - case "$cur" in - -parallel=*) - __packercomp "false true" "${cur##-parallel=}" - return - ;; - -except=*) - __packercomp "$builders" "${cur##-except=}" - return - ;; - -only=*) - __packercomp "$builders" "${cur##-only=}" - return - ;; - -*) - __packercomp "-debug -force -machine-readable -except= -only= -parallel= -var -var-file" - return - ;; - *) - esac - - __packercomp_template_file -} - -# Generates completion for the fix command. -__packer_fix () -{ - __packercomp_template_file -} - -# Generates completion for the inspect command. -__packer_inspect () -{ - case "$cur" in - -*) - __packercomp "-machine-readable" - return - ;; - *) - esac - - __packercomp_template_file -} - -# Generates completion for the validate command. -__packer_validate () -{ - __packercomp_template_file -} - -# Main function for packer completion. -# -# Searches for a command in $COMP_WORDS. If one is found -# the appropriate function from above is called, if not -# completion for global options is done. -_packer_completion () -{ - cur=${COMP_WORDS[COMP_CWORD]} - # Words containing an equal sign get split into tokens in bash > 4, which - # doesn't come in handy here. - # This is handled here. bash < 4 does not split. - declare -f _get_comp_words_by_ref >/dev/null && _get_comp_words_by_ref -n = cur - - COMPREPLY=() - local i c=1 command - - while [ $c -lt $COMP_CWORD ]; do - i="${COMP_WORDS[c]}" - case "$i" in - -*) ;; - *) command="$i"; break ;; - esac - ((c++)) - done - - if [ -z $command ]; then - case "$cur" in - '-'*) - __packercomp "-machine-readable --help --version" - ;; - *) - __packercomp "build fix inspect validate" - ;; - esac - return - fi - - local completion_func="__packer_${command}" - declare -f $completion_func >/dev/null && $completion_func -} - -complete -o nospace -F _packer_completion packer +if _binary_exists packer; then + complete -C packer packer +fi