brew/Library/Homebrew/cmd/--repository.sh
Ruoyu Zhong 64838db963
cmd/--repository: improve tap name error checking
Before:

    $ brew --repo core
    /usr/local/Homebrew/Library/Taps/core/homebrew-core

After:

    $ brew --repo core
    Error: Invalid tap name: core
2024-07-14 13:17:26 -04:00

50 lines
974 B
Bash

#: * `--repository`, `--repo` [<tap> ...]
#:
#: Display where Homebrew's Git repository is located.
#:
#: If <user>`/`<repo> are provided, display where tap <user>`/`<repo>'s directory is located.
# HOMEBREW_REPOSITORY, HOMEBREW_LIBRARY are set by brew.sh
# shellcheck disable=SC2154
tap_path() {
local tap="$1"
local user
local repo
local part
if [[ "${tap}" != *"/"* ]]
then
odie "Invalid tap name: ${tap}"
fi
user="$(echo "${tap%%/*}" | tr '[:upper:]' '[:lower:]')"
repo="$(echo "${tap#*/}" | tr '[:upper:]' '[:lower:]')"
for part in "${user}" "${repo}"
do
if [[ -z "${part}" || "${part}" == *"/"* ]]
then
odie "Invalid tap name: ${tap}"
fi
done
repo="${repo#(home|linux)brew-}"
echo "${HOMEBREW_LIBRARY}/Taps/${user}/homebrew-${repo}"
}
homebrew---repository() {
local tap
if [[ "$#" -eq 0 ]]
then
echo "${HOMEBREW_REPOSITORY}"
return
fi
for tap in "$@"
do
tap_path "${tap}"
done
}