diff options
| author | Mike McQuaid | 2016-02-16 09:29:03 +0000 |
|---|---|---|
| committer | Mike McQuaid | 2016-02-16 09:31:58 +0000 |
| commit | 691e4aec11a71bdd88a59391aa7b56ea0cf48639 (patch) | |
| tree | 425e26700a51dc40a8ac3f4b206edc914316f684 /bin | |
| parent | 4e51c0b8ea371d15d2ae996700e1c988e79cab17 (diff) | |
| download | brew-691e4aec11a71bdd88a59391aa7b56ea0cf48639.tar.bz2 | |
bin/brew: move logic to Library.
`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/homebrew#49185.
Signed-off-by: Mike McQuaid <mike@mikemcquaid.com>
Diffstat (limited to 'bin')
| -rwxr-xr-x | bin/brew | 172 |
1 files changed, 2 insertions, 170 deletions
@@ -1,31 +1,8 @@ #!/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 || odie "Error: failed to cd to $*!" + cd "$@" >/dev/null } -# 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 - BREW_FILE_DIRECTORY="$(chdir "${0%/*}" && pwd -P)" HOMEBREW_BREW_FILE="$BREW_FILE_DIRECTORY/${0##*/}" @@ -41,149 +18,4 @@ HOMEBREW_PREFIX="$(chdir "$(dirname "$(dirname "$HOMEBREW_BREW_FILE")")" && pwd HOMEBREW_REPOSITORY="$(chdir "$BREW_FILE_DIRECTORY"/../ && pwd -P)" HOMEBREW_LIBRARY="$(chdir "$BREW_FILE_DIRECTORY"/../Library && pwd -P)" -# 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 +source "$HOMEBREW_LIBRARY/brew.sh" |
