aboutsummaryrefslogtreecommitdiffstats
path: root/Library/Homebrew/utils/ruby.sh
diff options
context:
space:
mode:
authorXu Cheng2016-06-28 23:41:28 +0800
committerXu Cheng2016-07-11 21:12:56 +0800
commit534bf08ec33c89115d8061a9d1845e67f9a6cbb6 (patch)
treef00491ba7c72030f29f227700615d2f25c676423 /Library/Homebrew/utils/ruby.sh
parenta35e3f1fc183af98451f92eda2c5e42c328e36ba (diff)
downloadbrew-534bf08ec33c89115d8061a9d1845e67f9a6cbb6.tar.bz2
brew.sh: new HOMEBREW_RUBY_PATH resolution logic
* Use vendor Ruby if it's present * Install vendor Ruby for system without Ruby 2.x
Diffstat (limited to 'Library/Homebrew/utils/ruby.sh')
-rw-r--r--Library/Homebrew/utils/ruby.sh57
1 files changed, 57 insertions, 0 deletions
diff --git a/Library/Homebrew/utils/ruby.sh b/Library/Homebrew/utils/ruby.sh
new file mode 100644
index 000000000..4b8e58f01
--- /dev/null
+++ b/Library/Homebrew/utils/ruby.sh
@@ -0,0 +1,57 @@
+setup-ruby-path() {
+ local vendor_dir
+ local vendor_ruby_current_version
+ local vendor_ruby_path
+ local ruby_version_major
+
+ vendor_dir="$HOMEBREW_LIBRARY/Homebrew/vendor"
+ vendor_ruby_current_version="$vendor_dir/portable-ruby/current"
+ vendor_ruby_path="$vendor_ruby_current_version/bin/ruby"
+
+ if [[ -z "$HOMEBREW_DEVELOPER" ]]
+ then
+ unset HOMEBREW_RUBY_PATH
+ fi
+
+ if [[ -z "$HOMEBREW_RUBY_PATH" && "$HOMEBREW_COMMAND" != "vendor-install" ]]
+ then
+ if [[ -x "$vendor_ruby_path" ]]
+ then
+ HOMEBREW_RUBY_PATH="$vendor_ruby_path"
+
+ if [[ $(readlink "$vendor_ruby_current_version") != "$(<"$vendor_dir/portable-ruby-version")" ]]
+ then
+ if ! brew vendor-install ruby --quiet
+ then
+ onoe "Failed to upgrade vendor Ruby."
+ fi
+ fi
+ else
+ 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
+
+ if [[ -n "$HOMEBREW_RUBY_PATH" ]]
+ then
+ ruby_version_major="$("$HOMEBREW_RUBY_PATH" --version)"
+ ruby_version_major="${ruby_version_major#ruby }"
+ ruby_version_major="${ruby_version_major%%.*}"
+ fi
+
+ if [[ "$ruby_version_major" != "2" ]]
+ then
+ brew vendor-install ruby --quiet
+ if [[ ! -x "$vendor_ruby_path" ]]
+ then
+ odie "Failed to install vendor Ruby."
+ fi
+ HOMEBREW_RUBY_PATH="$vendor_ruby_path"
+ fi
+ fi
+ fi
+
+ export HOMEBREW_RUBY_PATH
+}