forked from mistydemeo/tigerbrew
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
`bin/brew` is getting a bit bloated and it's annoying to open all of `HOMEBREW_PREFIX` in your editor of choice and have it search through the `Cellar`. Let's instead keep the bare minimum in `bin/brew` and move the rest to `Library`. Closes Homebrew/legacy-homebrew#49185. Signed-off-by: Mike McQuaid <[email protected]>
- Loading branch information
1 parent
dc8d60d
commit dd55d98
Showing
2 changed files
with
177 additions
and
33 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,172 @@ | ||
odie() { | ||
if [[ -t 2 ]] # check whether stderr is a tty. | ||
then | ||
echo -ne "\033[4;31mError\033[0m: " >&2 # highlight Error with underline and red color | ||
else | ||
echo -n "Error: " >&2 | ||
fi | ||
if [[ $# -eq 0 ]] | ||
then | ||
/bin/cat >&2 | ||
else | ||
echo "$*" >&2 | ||
fi | ||
exit 1 | ||
} | ||
|
||
chdir() { | ||
cd "$@" >/dev/null || odie "Error: failed to cd to $*!" | ||
} | ||
|
||
# Force UTF-8 to avoid encoding issues for users with broken locale settings. | ||
if [[ "$(locale charmap 2> /dev/null)" != "UTF-8" ]] | ||
then | ||
export LC_ALL="en_US.UTF-8" | ||
fi | ||
|
||
# Where we store built products; /usr/local/Cellar if it exists, | ||
# otherwise a Cellar relative to the Repository. | ||
if [[ -d "$HOMEBREW_PREFIX/Cellar" ]] | ||
then | ||
HOMEBREW_CELLAR="$HOMEBREW_PREFIX/Cellar" | ||
else | ||
HOMEBREW_CELLAR="$HOMEBREW_REPOSITORY/Cellar" | ||
fi | ||
|
||
case "$*" in | ||
--prefix) echo "$HOMEBREW_PREFIX"; exit 0 ;; | ||
--cellar) echo "$HOMEBREW_CELLAR"; exit 0 ;; | ||
--repository|--repo) echo "$HOMEBREW_REPOSITORY"; exit 0 ;; | ||
esac | ||
|
||
if [[ "$HOMEBREW_PREFIX" = "/" || "$HOMEBREW_PREFIX" = "/usr" ]] | ||
then | ||
# it may work, but I only see pain this route and don't want to support it | ||
odie "Cowardly refusing to continue at this prefix: $HOMEBREW_PREFIX" | ||
fi | ||
|
||
# Users may have these set, pointing the system Ruby | ||
# at non-system gem paths | ||
unset GEM_HOME | ||
unset GEM_PATH | ||
|
||
if [[ -z "$HOMEBREW_DEVELOPER" ]] | ||
then | ||
unset HOMEBREW_RUBY_PATH | ||
fi | ||
|
||
if [[ "$(uname -s)" = "Darwin" ]] | ||
then | ||
HOMEBREW_OSX="1" | ||
fi | ||
|
||
if [[ -z "$HOMEBREW_RUBY_PATH" ]] | ||
then | ||
if [[ -n "$HOMEBREW_OSX" ]] | ||
then | ||
HOMEBREW_RUBY_PATH="/System/Library/Frameworks/Ruby.framework/Versions/Current/usr/bin/ruby" | ||
else | ||
HOMEBREW_RUBY_PATH="$(which ruby)" | ||
fi | ||
fi | ||
|
||
export HOMEBREW_BREW_FILE | ||
export HOMEBREW_RUBY_PATH | ||
export HOMEBREW_PREFIX | ||
export HOMEBREW_REPOSITORY | ||
export HOMEBREW_LIBRARY | ||
export HOMEBREW_CELLAR | ||
|
||
if [[ -n "$HOMEBREW_OSX" ]] | ||
then | ||
if [[ "$('/usr/bin/xcode-select' --print-path)" = "/" ]] | ||
then | ||
odie <<EOS | ||
Your xcode-select path is currently set to '/'. | ||
This causes the 'xcrun' tool to hang, and can render Homebrew unusable. | ||
If you are using Xcode, you should: | ||
sudo xcode-select -switch /Applications/Xcode.app | ||
Otherwise, you should: | ||
sudo rm -rf /usr/share/xcode-select | ||
EOS | ||
fi | ||
|
||
XCRUN_OUTPUT="$(/usr/bin/xcrun clang 2>&1)" | ||
XCRUN_STATUS="$?" | ||
|
||
if [[ "$XCRUN_STATUS" -ne 0 && "$XCRUN_OUTPUT" = *license* ]] | ||
then | ||
odie <<EOS | ||
You have not agreed to the Xcode license. Please resolve this by running: | ||
sudo xcodebuild -license | ||
EOS | ||
fi | ||
fi | ||
|
||
# Many Pathname operations use getwd when they shouldn't, and then throw | ||
# odd exceptions. Reduce our support burden by showing a user-friendly error. | ||
if [[ ! -d "$(pwd)" ]] | ||
then | ||
odie "The current working directory doesn't exist, cannot proceed." | ||
fi | ||
|
||
if [[ "$1" = -v ]] | ||
then | ||
# Shift the -v to the end of the parameter list | ||
shift | ||
set -- "$@" -v | ||
fi | ||
|
||
HOMEBREW_COMMAND="$1" | ||
shift | ||
case "$HOMEBREW_COMMAND" in | ||
ls) HOMEBREW_COMMAND="list";; | ||
homepage) HOMEBREW_COMMAND="home";; | ||
-S) HOMEBREW_COMMAND="search";; | ||
up) HOMEBREW_COMMAND="update";; | ||
ln) HOMEBREW_COMMAND="link";; | ||
instal) HOMEBREW_COMMAND="install";; # gem does the same | ||
rm) HOMEBREW_COMMAND="uninstall";; | ||
remove) HOMEBREW_COMMAND="uninstall";; | ||
configure) HOMEBREW_COMMAND="diy";; | ||
abv) HOMEBREW_COMMAND="info";; | ||
dr) HOMEBREW_COMMAND="doctor";; | ||
--repo) HOMEBREW_COMMAND="--repository";; | ||
environment) HOMEBREW_COMMAND="--env";; | ||
--config) HOMEBREW_COMMAND="config";; | ||
esac | ||
|
||
if [[ -f "$HOMEBREW_LIBRARY/Homebrew/cmd/$HOMEBREW_COMMAND.sh" ]] ; then | ||
HOMEBREW_BASH_COMMAND="$HOMEBREW_LIBRARY/Homebrew/cmd/$HOMEBREW_COMMAND.sh" | ||
elif [[ -n "$HOMEBREW_DEVELOPER" && -f "$HOMEBREW_LIBRARY/Homebrew/dev-cmd/$HOMEBREW_COMMAND.sh" ]] ; then | ||
HOMEBREW_BASH_COMMAND="$HOMEBREW_LIBRARY/Homebrew/dev-cmd/$HOMEBREW_COMMAND.sh" | ||
fi | ||
|
||
if [[ "$(id -u)" = "0" && "$(/usr/bin/stat -f%u "$HOMEBREW_BREW_FILE")" != "0" ]] | ||
then | ||
case "$HOMEBREW_COMMAND" in | ||
install|reinstall|postinstall|link|pin|update|update-ruby|upgrade|create|migrate|tap|switch) | ||
odie <<EOS | ||
Cowardly refusing to 'sudo brew $HOMEBREW_COMMAND' | ||
You can use brew with sudo, but only if the brew executable is owned by root. | ||
However, this is both not recommended and completely unsupported so do so at | ||
your own risk. | ||
EOS | ||
;; | ||
esac | ||
fi | ||
|
||
if [[ -n "$HOMEBREW_BASH_COMMAND" ]] | ||
then | ||
# source rather than executing directly to ensure the entire file is read into | ||
# memory before it is run. This makes running a Bash script behave more like | ||
# a Ruby script and avoids hard-to-debug issues if the Bash script is updated | ||
# at the same time as being run. | ||
# | ||
# Hide shellcheck complaint: | ||
# shellcheck source=/dev/null | ||
source "$HOMEBREW_BASH_COMMAND" | ||
{ "homebrew-$HOMEBREW_COMMAND" "$@"; exit $?; } | ||
else | ||
exec "$HOMEBREW_RUBY_PATH" -W0 "$HOMEBREW_LIBRARY/brew.rb" "$HOMEBREW_COMMAND" "$@" | ||
fi |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters