This reverts commit 2c8ee40566.
- _Shellcheck_ documentation for the [`source-path`]( https://github.com/koalaman/shellcheck/wiki/Directive#source-path ) directive indicates this is correct usage. We're `source`ing the `bash-preexec.sh` file from inside the `vendor/github.com/rcaloras/bash-preexec` directory. If we used the [`source`]( https://github.com/koalaman/shellcheck/wiki/Directive#source ) directive, then the full complete path to the file itself would need to be specified.
- Fix `disable=1090` to `disable=SC1090` and remove duplicate lines since this `shellcheck` directive will apply to the entire if-ladder.
- Disabling `SC2154` is almost never appropriate. In this case, several `_git_bash_completion*` variables are expressly assigned in this file, so there is no "unknown" to ignore.
Aside: the `${!_git_bash_completion@}` construct will expand to all variables starting with the previx `_git_bash_completion`, so this line is just a shorthand way to clear all our variables concisely without forgetting any.
43 lines
1.3 KiB
Bash
43 lines
1.3 KiB
Bash
# shellcheck shell=bash
|
|
#
|
|
# Locate and load completions for `git`.
|
|
|
|
# Make sure git is installed
|
|
_command_exists git || return
|
|
|
|
# Don't handle completion if it's already managed
|
|
if complete -p git &> /dev/null; then
|
|
_log_warning "completion already loaded - this usually means it is safe to stop using this completion"
|
|
return 0
|
|
fi
|
|
|
|
_git_bash_completion_xcrun_git=
|
|
if _command_exists xcrun; then
|
|
_git_bash_completion_xcrun_git="$(xcrun --find git)"
|
|
fi
|
|
_git_bash_completion_paths=(
|
|
# Standard locations
|
|
"${GIT_EXE%/*}/../share/git-core/git-completion.bash"
|
|
"${GIT_EXE%/*}/../share/git-core/contrib/completion/git-completion.bash"
|
|
"${GIT_EXE%/*}/../etc/bash_completion.d/git-completion.bash"
|
|
# MacOS non-system locations
|
|
"${_git_bash_completion_xcrun_git%/bin/git}/share/git-core/git-completion.bash"
|
|
)
|
|
|
|
# Load the first completion file found
|
|
_git_bash_completion_found=false
|
|
for _comp_path in "${_git_bash_completion_paths[@]}"; do
|
|
if [[ -r "$_comp_path" ]]; then
|
|
_git_bash_completion_found=true
|
|
# shellcheck disable=SC1090 # don't follow
|
|
source "$_comp_path"
|
|
break
|
|
fi
|
|
done
|
|
|
|
# Cleanup
|
|
if [[ "${_git_bash_completion_found}" == false ]]; then
|
|
_log_warning "no completion files found - please try enabling the 'system' completion instead."
|
|
fi
|
|
unset "${!_git_bash_completion@}"
|