#! /bin/bash : ${PROG:=$(basename ${BASH_SOURCE})} # Macs have bash3 for which the bash-completion package doesn't include # _init_completion. This is a minimal version of that function. _cli_init_completion() { COMPREPLY=() _get_comp_words_by_ref "$@" cur prev words cword } _cli_bash_autocomplete() { if [[ "${COMP_WORDS[0]}" != "source" ]]; then local cur opts base words COMPREPLY=() cur="${COMP_WORDS[COMP_CWORD]}" if declare -F _init_completion >/dev/null 2>&1; then _init_completion -n "=:" || return else _cli_init_completion -n "=:" || return fi words=("${words[@]:0:$cword}") if [[ "$cur" == "-"* ]]; then requestComp="${words[*]} ${cur} --generate-shell-completion" else requestComp="${words[*]} --generate-shell-completion" fi opts=$(eval "${requestComp}" 2>/dev/null) COMPREPLY=($(compgen -W "${opts}" -- ${cur})) return 0 fi } complete -o bashdefault -o default -o nospace -F _cli_bash_autocomplete $PROG unset PROG