Merge pull request #1915 from gaelicWizard/bash_completion

Support multiple versions of _Bash Completion_
pull/1936/head
Noah Gorny 2021-09-07 10:12:12 +03:00 committed by GitHub
commit 9ea60020ae
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 30 additions and 9 deletions

View File

@ -5,14 +5,16 @@
if shopt -qo nounset if shopt -qo nounset
then # Bash-completion is too large and complex to expect to handle unbound variables throughout the whole codebase. then # Bash-completion is too large and complex to expect to handle unbound variables throughout the whole codebase.
BASH_IT_RESTORE_NOUNSET=true __bash_it_restore_nounset=true
shopt -uo nounset shopt -uo nounset
else else
BASH_IT_RESTORE_NOUNSET=false __bash_it_restore_nounset=false
fi fi
if [[ -r "${BASH_COMPLETION:-}" ]] ; then if [[ -r "${BASH_COMPLETION:-}" ]] ; then
# shellcheck disable=SC1091
source "${BASH_COMPLETION}" source "${BASH_COMPLETION}"
elif [[ -r /etc/bash_completion ]] ; then elif [[ -r /etc/bash_completion ]] ; then
# shellcheck disable=SC1091 # shellcheck disable=SC1091
source /etc/bash_completion source /etc/bash_completion
@ -24,15 +26,34 @@ elif [[ -r /etc/profile.d/bash_completion.sh ]] ; then
elif _bash_it_homebrew_check elif _bash_it_homebrew_check
then then
: ${BASH_COMPLETION_COMPAT_DIR:=$BASH_IT_HOMEBREW_PREFIX/etc/bash_completion.d}
case "${BASH_VERSION}" in
1*|2*|3.0*|3.1*)
_log_warning "Cannot load completion due to version of shell. Are you using Bash 3.2+?"
;;
3.2*|4.0*|4.1*)
# Import version 1.x of bash-completion, if installed.
BASH_COMPLETION="$BASH_IT_HOMEBREW_PREFIX/opt/bash-completion@1/etc/bash_completion"
if [[ -r "$BASH_COMPLETION" ]] ; then
# shellcheck disable=SC1090
source "$BASH_COMPLETION"
else
unset BASH_COMPLETION
fi
;;
4.2*|5*|*)
# homebrew/versions/bash-completion2 (required for projects.completion.bash) is installed to this path # homebrew/versions/bash-completion2 (required for projects.completion.bash) is installed to this path
if [[ -r "$BASH_IT_HOMEBREW_PREFIX"/etc/profile.d/bash_completion.sh ]] ; then if [[ -r "$BASH_IT_HOMEBREW_PREFIX"/etc/profile.d/bash_completion.sh ]] ; then
# shellcheck disable=SC1090 # shellcheck disable=SC1090
source "$BASH_IT_HOMEBREW_PREFIX"/etc/profile.d/bash_completion.sh source "$BASH_IT_HOMEBREW_PREFIX"/etc/profile.d/bash_completion.sh
fi fi
;;
esac
fi fi
if $BASH_IT_RESTORE_NOUNSET if $__bash_it_restore_nounset
then then
shopt -so nounset shopt -so nounset
fi fi
unset BASH_IT_RESTORE_NOUNSET unset __bash_it_restore_nounset