command-not-found: Detect Homebrew repo internally, not idiomatically

For performance reasons, we prefer detecting Homebrew prefix internally
instead of the more idiomatic form `brew --repository`.

We attempt looking up $HOMEBREW_REPOSITORY first (in case `brew shellenv`
has been sourced-in earlier). Else, we look it up by resolving absolute
path of $HOMEBREW_REPOSITORY.

This should work for most standard (and officially documented) Homebrew
installations.
main
Indrajit Raychaudhuri 3 years ago committed by Indrajit Raychaudhuri
parent ac1c39d2e1
commit c857e809c3

@ -7,14 +7,14 @@
# #
# Load command-not-found on Debian-based distributions. # Load command-not-found on Debian-based distributions.
if [[ -s '/etc/zsh_command_not_found' ]]; then if [[ -s /etc/zsh_command_not_found ]]; then
source '/etc/zsh_command_not_found' source /etc/zsh_command_not_found
# Load command-not-found on Arch Linux-based distributions. # Load command-not-found on Arch Linux-based distributions.
elif [[ -s '/usr/share/doc/pkgfile/command-not-found.zsh' ]]; then elif [[ -s /usr/share/doc/pkgfile/command-not-found.zsh ]]; then
source '/usr/share/doc/pkgfile/command-not-found.zsh' source /usr/share/doc/pkgfile/command-not-found.zsh
# Load command-not-found on macOS when Homebrew tap is configured. # Load command-not-found on macOS when Homebrew tap is configured.
elif (( $+commands[brew] )) \ elif (( $+commands[brew] )) \
&& [[ -s "${hb_cnf_handler::="$(brew --repository 2> /dev/null)"/Library/Taps/homebrew/homebrew-command-not-found/handler.sh}" ]]; then && [[ -s ${hb_cnf_handler::="${HOMEBREW_REPOSITORY:-$commands[brew]:A:h:h}/Library/Taps/homebrew/homebrew-command-not-found/handler.sh"} ]]; then
source "$hb_cnf_handler" source "$hb_cnf_handler"
unset hb_cnf_handler unset hb_cnf_handler
# Return if requirements are not found. # Return if requirements are not found.

Loading…
Cancel
Save