aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorXu Cheng2016-01-18 11:48:23 +0800
committerXu Cheng2016-01-20 13:55:06 +0800
commite12e1a5d5d71a250d66e3070f0047dd10278eb38 (patch)
tree07fb1c0bc4c02c24d7fb1fe2512f828edb79677b
parent3fdf1a623b291bd07b3ecc5b531e8fa1a6868317 (diff)
downloadbrew-e12e1a5d5d71a250d66e3070f0047dd10278eb38.tar.bz2
bin/brew: introduce odie function
-rwxr-xr-xbin/brew36
1 files changed, 22 insertions, 14 deletions
diff --git a/bin/brew b/bin/brew
index 318c8acd8..a801c0ba5 100755
--- a/bin/brew
+++ b/bin/brew
@@ -1,10 +1,23 @@
#!/bin/bash
+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 || {
- echo "Error: failed to cd to " "$@" "!" >&2
- exit 1
- }
+ cd "$@" >/dev/null || odie "Error: failed to cd to $*!"
}
# Force UTF-8 to avoid encoding issues for users with broken locale settings.
@@ -46,8 +59,7 @@ 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
- echo "Cowardly refusing to continue at this prefix: $HOMEBREW_PREFIX" >&2
- exit 1
+ odie "Cowardly refusing to continue at this prefix: $HOMEBREW_PREFIX"
fi
# Users may have these set, pointing the system Ruby
@@ -86,7 +98,7 @@ if [[ -n "$HOMEBREW_OSX" ]]
then
if [[ "$('xcode-select' --print-path)" = "/" ]]
then
- cat >&2 <<EOS
+ 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:
@@ -94,7 +106,6 @@ If you are using Xcode, you should:
Otherwise, you should:
sudo rm -rf /usr/share/xcode-select
EOS
- exit 1
fi
XCRUN_OUTPUT="$(/usr/bin/xcrun clang 2>&1)"
@@ -102,11 +113,10 @@ EOS
if [[ "$XCRUN_STATUS" -ne 0 && "$XCRUN_OUTPUT" = *license* ]]
then
- cat >&2 <<EOS
+ odie <<EOS
You have not agreed to the Xcode license. Please resolve this by running:
sudo xcodebuild -license
EOS
- exit 1
fi
fi
@@ -114,8 +124,7 @@ fi
# odd exceptions. Reduce our support burden by showing a user-friendly error.
if ! [[ -d "$(pwd)" ]]
then
- echo "The current working directory doesn't exist, cannot proceed." >&2
- exit 1
+ odie "The current working directory doesn't exist, cannot proceed."
fi
if [[ "$1" = -v ]]
@@ -132,13 +141,12 @@ if [[ "$(id -u)" = "0" && "$(stat -f%u "$HOMEBREW_BREW_FILE")" != "0" ]]
then
case "$HOMEBREW_COMMAND" in
install|reinstall|postinstall|link|pin|unpin|update|update-bash|upgrade|create|migrate|tap|switch)
- cat >&2 <<EOS
+ 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
- exit 1
;;
esac
fi