brew/Library/Homebrew/prefix.sh

59 lines
1.6 KiB
Bash
Raw Normal View History

# does the quickest output of brew --prefix possible for the basic cases:
# - `brew --prefix` (output HOMEBREW_PREFIX)
# - `brew --prefix <formula>` (output HOMEBREW_PREFIX/opt/<formula>)
# anything else? delegate to the slower cmd/--prefix.rb
2021-04-20 20:32:01 +09:00
# HOMEBREW_PREFIX and HOMEBREW_REPOSITORY are set by brew.sh
# shellcheck disable=SC2154
homebrew-prefix() {
while [[ "$#" -gt 0 ]]
do
case "$1" in
# check we actually have --prefix and not e.g. --prefixsomething
--prefix)
local prefix="1"
shift
;;
# reject all other flags
-*) return 1 ;;
*)
[[ -n "${formula}" ]] && return 1
local formula="$1"
shift
;;
esac
done
[[ -z "${prefix}" ]] && return 1
[[ -z "${formula}" ]] && echo "${HOMEBREW_PREFIX}" && return 0
2023-02-14 04:31:18 +00:00
local formula_exists
if [[ -f "${HOMEBREW_REPOSITORY}/Library/Taps/homebrew/homebrew-core/Formula/${formula}.rb" ]]
then
2023-02-14 04:31:18 +00:00
formula_exists="1"
else
2023-02-14 04:31:18 +00:00
local formula_path
2021-03-06 21:07:33 +08:00
formula_path="$(
shopt -s nullglob
2021-04-20 20:32:01 +09:00
echo "${HOMEBREW_REPOSITORY}/Library/Taps"/*/*/{Formula/,HomebrewFormula/,}"${formula}.rb"
2021-03-06 21:07:33 +08:00
)"
2023-02-14 04:31:18 +00:00
[[ -n "${formula_path}" ]] && formula_exists="1"
fi
2023-02-14 04:31:18 +00:00
if [[ -z "${formula_exists}" &&
-z "${HOMEBREW_NO_INSTALL_FROM_API}" &&
-f "${HOMEBREW_CACHE}/api/formula.json" ]]
then
formula_exists="$(
ruby -rjson <<RUBY 2>/dev/null
puts 1 if JSON.parse(File.read("${HOMEBREW_CACHE}/api/formula.json")).any? do |f|
f["name"] == "${formula}"
end
RUBY
)"
fi
[[ -z "${formula_exists}" ]] && return 1
2021-04-20 20:32:01 +09:00
echo "${HOMEBREW_PREFIX}/opt/${formula}"
return 0
}