bash/rvm in rvm-0.0.3 vs bash/rvm in rvm-0.0.4
- old
+ new
@@ -1,9 +1,9 @@
#!/bin/bash
rvm_author="Wayne E. Seguin"
-rvm_version="0.0.3"
+rvm_version="0.0.4"
rvm_updated="2009.08.23"
#
# License: See LICENSE
#
@@ -24,11 +24,12 @@
* usage - Show this usage information
use - Switch to using a specific ruby versio (new login shell)
info - Show information for current ruby
gemdir - Switch to gem directory for installation (new login shell)
srcdir - Switch to src directory for the current ruby installation
- gemdup - Clone source implementation version gems to currently used version
+ gemdup - Clone source implementation version gems to currently used version
+ (expiramental)
install - Install a ruby version, default is from source
debug - Emit environment and configuration information for debugging
Implementation:
@@ -61,12 +62,13 @@
Examples:
$ gem install rvm # Install the rvm gem
$ rvm-install # Install rvm, adds source hooks to ~/.bash_profile
$ rvm install jruby # Install jRuby, default 1.3.1
- $ rvm use ruby -v 1.9.1 # Use Ruby 1.9, install first if not installed
- $ rvm use -v 1.9 # Equivalent to above, because of defaults
+ $ rvm use ruby -v 1.9.1 # Use Ruby 1.9.1, install first if not installed
+ $ rvm use 1.9 # Equivalent to above, due to dof efaults
+ $ rvm use 1.8 # Use Ruby 1.8.6, install first if not installed
$ rvm use default # Use the system default (as if no rvm)
TODO: (in order)
* Documentation
@@ -114,17 +116,18 @@
}
function ruby-install-source {
case "${version-$1}" in
- 1.9|1.9.1) major="1.9" ; minor="1" ; patchlevel="${2-243}" ;;
- 1.8|1.8.6) major="1.8" ; minor="6" ; patchlevel="${2-369}" ;;
- 1.8.7) major="1.8" ; minor="7" ; patchlevel="${2-174}" ;;
+ 1.9|1.9.1) major="1.9" ; minor="1" ; level="${2-243}" ;;
+ 1.9.2) major="1.9" ; minor="2" ; level="review1" ;;
+ 1.8|1.8.6) major="1.8" ; minor="6" ; level="${2-369}" ;;
+ 1.8.7) major="1.8" ; minor="7" ; level="${2-174}" ;;
*) fail "Ruby version '$version' is unknown."
esac
- package_name="ruby-$major.$minor-p$patchlevel"
+ package_name="ruby-$major.$minor-p$level"
url="ftp://ftp.ruby-lang.org/pub/ruby/$major/$package_name.tar.gz"
pushd $source_path
if [ -d $package_name ] ; then
cd $package_name
@@ -132,10 +135,23 @@
if [ ! -f "$package_name.tar.gz" ] ; then $curl $url ; fi
tar xzf $package_name.tar.gz && cd $package_name/
fi
./configure --prefix=$install_path/$package_name ${configure-'--enable-shared'} && make && make install
chmod +x $install_path/$package_name/bin/*
+
+ # Now install rubygems for this ruby version.
+ gem_package_name="rubygems-1.3.5"
+ gem_url="http://rubyforge.org/frs/download.php/60718/$gem_package_name.tgz"
+ if [ -d $gem_package_name ] ; then
+ cd $gem_package_name
+ else
+ if [ ! -f $gem_package_name.tgz ] ; then $curl $gem_url ; fi
+ tar zxf $gem_package_name.tgz && cd $gem_package_name
+ fi
+ # Well this is fun... fix nil error on require_paths:
+ sed -i '' "s/require_paths\.join/require_paths.to_a.join/" $source_path/$package_name/$gem_package_name/lib/rubygems/gem_path_searcher.rb
+ $install_path/$package_name/bin/ruby ./setup.rb
popd
}
function ruby-install {
@@ -230,21 +246,25 @@
fi
;;
ruby)
if [ "$version" = "1.8.6" ] ; then
- patchlevel="${patchlevel-369}"
- MY_RUBY_HOME="$install_path/ruby-1.8.6-p$patchlevel"
+ level="${patchlevel-369}"
+ MY_RUBY_HOME="$install_path/ruby-1.8.6-p$level"
GEM_HOME="$HOME/.gem/ruby/1.8"
elif [ "$version" = "1.8.7" ] ; then
- patchlevel="${patchlevel-174}"
- MY_RUBY_HOME="$install_path/ruby-1.8.7-p$patchlevel"
+ level="${patchlevel-174}"
+ MY_RUBY_HOME="$install_path/ruby-1.8.7-p$level"
GEM_HOME="$HOME/.gem/ruby/1.8"
elif [ "$version" = "1.9.1" -o "$version" = "1.9" ] ; then
- patchlevel="${patchlevel-243}"
- MY_RUBY_HOME="$install_path/ruby-1.9.1-p$patchlevel"
- GEM_HOME="$HOME/.gem/ruby/1.9.1"
+ level="${patchlevel-243}"
+ MY_RUBY_HOME="$install_path/ruby-1.9.1-p$level"
+ GEM_HOME="$HOME/.gem/ruby/1.9"
+ elif [ "$version" = "1.9.2" ] ; then
+ level="${patchlevel-review1}"
+ MY_RUBY_HOME="$install_path/ruby-1.9.2-p$level"
+ GEM_HOME="$HOME/.gem/ruby/1.9"
else
fail "Unknown ruby version: $version"
fi
;;
@@ -257,11 +277,11 @@
RUBY_VERSION="$($MY_RUBY_HOME/bin/ruby -v | sed 's/^\(.*\) (.*$/\1/')"
export GEM_HOME MY_RUBY_HOME RUBY_VERSION
if [ ! -d $MY_RUBY_HOME ] ; then
warn "$implementation $version is not installed, installing."
- ruby-install $implementation $version $patchlevel
+ ruby-install $implementation $version $level
fi
# Setup ~/.rvm/current
echo "PATH=$MY_RUBY_HOME/bin:$GEM_HOME/bin:\$PATH ; export PATH" > ~/.rvm/current
for variable in RUBY_VERSION GEM_HOME MY_RUBY_HOME ; do
@@ -282,16 +302,14 @@
case "$implementation" in
jruby) GEM_HOME="$HOME/.gem/jruby/1.8" ;;
ree) GEM_HOME="$HOME/.gem/ruby-enterprise/1.8" ;;
ruby)
- if [ "$version" = "1.8.6" -o "$version" = "1.8" ] ; then
+ if [ "${version%\.*}" = "1.8" ] ; then
GEM_HOME="$HOME/.gem/ruby/1.8"
- elif [ "$version" = "1.8.7" ] ; then
- GEM_HOME="$HOME/.gem/ruby/1.8"
- elif [ "$version" = "1.9.1" -o "$version" = "1.9" ] ; then
- GEM_HOME="$HOME/.gem/ruby/1.9.1"
+ elif [ "${version%\.*}" = "1.9" ] ; then
+ GEM_HOME="$HOME/.gem/ruby/1.9"
else
fail "Unknown ruby version: $version"
fi
;;
*)
@@ -328,18 +346,21 @@
fi
;;
ruby)
if [ "$version" = "1.8.6" -o "$version" = "1.8" ] ; then
- patchlevel="${patchlevel-369}"
- src_dir="$source_path/ruby-1.8.6-p$patchlevel"
+ level="${patchlevel-369}"
+ src_dir="$source_path/ruby-1.8.6-p$level"
elif [ "$version" = "1.8.7" ] ; then
- patchlevel="${patchlevel-174}"
- src_dir="$source_path/ruby-1.8.7-p$patchlevel"
+ level="${patchlevel-174}"
+ src_dir="$source_path/ruby-1.8.7-p$level"
elif [ "$version" = "1.9.1" -o "$version" = "1.9" ] ; then
- patchlevel="${patchlevel-243}"
- src_dir="$source_path/ruby-1.9.1-p$patchlevel"
+ level="${patchlevel-243}"
+ src_dir="$source_path/ruby-1.9.1-p$level"
+ elif [ "$version" = "1.9.2" ] ; then
+ level="${patchlevel-review1}"
+ src_dir="$source_path/ruby-1.9.2-p$level"
else
fail "Unknown ruby version: $version"
fi
;;
@@ -389,11 +410,11 @@
case "$token" in
install|use|path|info|gemdir|gemdup|setup|version|debug|srcdir)
action=$token ;;
ruby|jruby|ree|default|all)
implementation="$token" ;;
- 1.8|1.9|1.8.6|1.8.7|1.9.1|1.2.0|1.3.1)
+ 1.8|1.9|1.8.6|1.8.7|1.9.1|1.9.2|1.2.0|1.3.1)
version="$token" ;;
-v|--version) version="$1" ; shift ;;
-l|--level) patchlevel="$1" ; shift ;;
-p|--prefix) install_path="$1" ; shift ;;
-s|--source) source_path="$1" ; shift ;; # Undocumented / untested "feature"
@@ -428,10 +449,10 @@
case "$action" in
install)
if [ "$implementation" = "all" ] ; then
for implementation in ruby jruby ree ; do
if [ "$implementation" = "ruby" ] ; then
- for version in 1.8.6 1.8.7 1.9.1 ; do
+ for version in 1.8.6 1.8.7 1.9.1 1.9.2 ; do
ruby-install $implementation $version $patchlevel
done
else
ruby-install $implementation $version $patchlevel
fi