system completion nitpicks

- General cleanup of system completion
- Use homebrew's completion loading script instead
- Deprecate completions covered by system
- Adjust load priority of brew to happen after system
pull/1641/head
cornfeedhobo 2020-07-12 15:09:45 -05:00
parent 7dd5b3a67f
commit f40bfa80f1
No known key found for this signature in database
GPG Key ID: 724357093F994B26
4 changed files with 43 additions and 42 deletions

View File

@ -1,13 +1,27 @@
if which brew >/dev/null 2>&1; then #!/usr/bin/env bash
BREW_PREFIX=$(brew --prefix)
if [ -f "$BREW_PREFIX"/etc/bash_completion.d/brew ]; then # Load late to make sure `system` completion loads first
. "$BREW_PREFIX"/etc/bash_completion.d/brew # BASH_IT_LOAD_PRIORITY: 375
elif [ -f "$BREW_PREFIX"/Library/Contributions/brew_bash_completion.sh ]; then
. "$BREW_PREFIX"/Library/Contributions/brew_bash_completion.sh if [[ "$(uname -s)" != 'Darwin' ]] ; then
elif [ -f "$BREW_PREFIX"/completions/bash/brew ]; then _log_warning "unsupported operating system - only 'Darwin' is supported"
# For the git-clone based installation, see here for more info: return 0
# https://github.com/Bash-it/bash-it/issues/1458 fi
# https://docs.brew.sh/Shell-Completion
. "$BREW_PREFIX"/completions/bash/brew # Make sure brew is installed
fi _command_exists brew || return 0
BREW_PREFIX=${BREW_PREFIX:-$(brew --prefix)}
if [[ -r "$BREW_PREFIX"/etc/bash_completion.d/brew ]] ; then
source "$BREW_PREFIX"/etc/bash_completion.d/brew
elif [[ -r "$BREW_PREFIX"/Library/Contributions/brew_bash_completion.sh ]] ; then
source "$BREW_PREFIX"/Library/Contributions/brew_bash_completion.sh
elif [[ -f "$BREW_PREFIX"/completions/bash/brew ]] ; then
# For the git-clone based installation, see here for more info:
# https://github.com/Bash-it/bash-it/issues/1458
# https://docs.brew.sh/Shell-Completion
source "$BREW_PREFIX"/completions/bash/brew
fi fi

View File

@ -1,11 +1 @@
if which crystal >/dev/null 2>&1; then _log_warning 'Bash completion for "crystal" is now covered by "system". This completion can be disabled.'
if which brew >/dev/null 2>&1; then
BREW_PREFIX=$(brew --prefix)
if [ -f "$BREW_PREFIX"/etc/bash_completion.d/crystal ]; then
. "$BREW_PREFIX"/etc/bash_completion.d/crystal
fi
fi
fi

View File

@ -1,28 +1,25 @@
#!/usr/bin/env bash #!/usr/bin/env bash
# Loads the system's Bash completion modules. # Loads the system's Bash completion modules.
# If Homebrew is installed (OS X), its Bash completion modules are loaded. # If Homebrew is installed (OS X), it's Bash completion modules are loaded.
if [ -f /etc/bash_completion ]; then if [[ -r /etc/bash_completion ]] ; then
. /etc/bash_completion # shellcheck disable=SC1091
fi source /etc/bash_completion
# Some distribution makes use of a profile.d script to import completion. # Some distribution makes use of a profile.d script to import completion.
if [ -f /etc/profile.d/bash_completion.sh ]; then elif [[ -r /etc/profile.d/bash_completion.sh ]] ; then
. /etc/profile.d/bash_completion.sh # shellcheck disable=SC1091
source /etc/profile.d/bash_completion.sh
fi fi
if [[ "$(uname -s)" == 'Darwin' ]] && _command_exists brew ; then
BREW_PREFIX=${BREW_PREFIX:-$(brew --prefix)}
if [ $(uname) = "Darwin" ] && command -v brew &>/dev/null ; then # homebrew/versions/bash-completion2 (required for projects.completion.bash) is installed to this path
BREW_PREFIX=$(brew --prefix) if [[ -r "$BREW_PREFIX"/etc/profile.d/bash_completion.sh ]] ; then
# shellcheck disable=SC1090
if [ -f "$BREW_PREFIX"/etc/bash_completion ]; then source "$BREW_PREFIX"/etc/profile.d/bash_completion.sh
. "$BREW_PREFIX"/etc/bash_completion
fi
# homebrew/versions/bash-completion2 (required for projects.completion.bash) is installed to this path
if [ "${BASH_VERSINFO}" -ge 4 ] && [ -f "$BREW_PREFIX"/share/bash-completion/bash_completion ]; then
export BASH_COMPLETION_COMPAT_DIR="$BREW_PREFIX"/etc/bash_completion.d
. "$BREW_PREFIX"/share/bash-completion/bash_completion
fi fi
fi fi

View File

@ -128,8 +128,8 @@ function local_setup {
@test "helpers: enable the brew completion" { @test "helpers: enable the brew completion" {
run _enable-completion "brew" run _enable-completion "brew"
assert_line -n 0 'brew enabled with priority 350.' assert_line -n 0 'brew enabled with priority 375.'
assert_link_exist "$BASH_IT/enabled/350---brew.completion.bash" assert_link_exist "$BASH_IT/enabled/375---brew.completion.bash"
} }
@test "helpers: enable the node plugin" { @test "helpers: enable the node plugin" {