As of Homebrew 4.6.12, command-not-found is built into Homebrew core and
the tap is deprecated, causing Homebrew to print deprecation warnings on
init until the tap is uninstalled, after which prezto can't find the
helper in its new location.
* Added logic to look first in the new location for handler.sh in the
core Homebrew repository, *then* check in Taps.
* Added an OSTYPE check for MacOS to prevent this from accidentally
engaging on Linux systems using Homebrew as a third party package
manager
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.
Now that 'command-not-found' helper loading has been significantly
simplified and the startup time improved in the official Homebrew tap,
the workaround for script detection (and caching) can be removed.
As is the convention in prezto, we cache the command-not-found handler to
avoid incurring the performance penalty of loading ruby interpreter on
every call. This restores the 'Homebrew way' of loading command-not-found
handler.
Further, the formally recommended command lookup mechanism in Homebrew
(viz., `brew command command-not-found-init`) is ruby based and is super
slow. To avoid performance penalty, we `find` it ourselves from
`TAP_DIRECTORY` defined internally in Homebrew.
This also reinstates support for custom taps or non-standard Homebrew location.