bash/rvm in rvm-0.0.11 vs bash/rvm in rvm-0.0.12
- old
+ new
@@ -1,11 +1,11 @@
#!/bin/bash
rvm_author="Wayne E. Seguin"
rvm_author_email="wayneeseguin@gmail.com"
rvm_website="http://github.com/wayneeseguin/rvm"
-rvm_version="0.0.11"
+rvm_version="0.0.12"
rvm_updated="2009.08.25"
#
# License: See LICENSE
#
@@ -33,15 +33,15 @@
use - Switch to using a specific ruby versio (new login shell)
info - Show information for current ruby
list - Show currently installed versions
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 version gems to current version
(highly expiramental) Example: rvm gemdup ~/.gem/ruby/1.8/
install - Install a ruby version, default is from source
uninstall - Uninstall a ruby version
- debug - Emit environment and configuration information for debugging
+ debug - Emit environment & configuration information for *current* ruby
Implementation:
* ruby - MRI/YARV Ruby (The Standard), defaults to 1.8.6
jruby - jRuby
@@ -108,38 +108,40 @@
Usage
}
# Logging functions based on level
-function log { echo -e "\n $* \e[0m" ; }
-function debug { log "\e[4;34m <d> \e[0m$*" ; }
-function info { log "\e[0;32m <i> \e[0m$*" ; }
-function warn { log "\e[0;33m <w> \e[0m$*" ; }
-function error { log "\e[0;31m <e> \e[0m$*" ; }
-function fail { log "\e[0;31m <e> \e[0m$*" ; return 1 ; }
+function rvm-log { echo -e "\n $* \e[0m" ; }
+function rvm-log-debug { rvm-log "\e[4;34m <d> \e[0m$*" ; }
+function rvm-log-info { rvm-log "\e[0;32m <i> \e[0m$*" ; }
+function rvm-log-warn { rvm-log "\e[0;33m <w> \e[0m$*" ; }
+function rvm-log-error { rvm-log "\e[0;31m <e> \e[0m$*" ; }
+function rvm-log-fail { rvm-log "\e[0;31m <e> \e[0m$*" ; return 1 ; }
function rvm-gi { gem install -q --no-rdoc --no-ri $* ; }
function rvm-info {
- full_version=$(ruby -v)
- ruby_implementation=$(echo "$full_version" | awk '{print $1}')
- ruby_version=$(echo "$full_version" | awk '{print $2}')
- ruby_patchlevel=$(echo "$full_version" | sed 's/^.*(//' | sed 's/).*$//')
- ruby_date=$(echo "$full_version" | sed 's/^.*(\([0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]\).*$/\1/')
- ruby_platform=$(echo "$full_version" | sed 's/^.*\[//' | sed 's/\].*$//')
-
cat <<-Info
+
ruby:
- implementation: "$ruby_implementation"
- version: "$ruby_version"
- date: "$ruby_date"
- platform: "$ruby_platform"
- patchlevel: "$ruby_patchlevel"
- gem_home: "${GEM_HOME-not set}"
- ruby_home: "${ruby_home-not set}"
- full_version: "$full_version"
+ interpreter: "$(ruby -v | awk '{print $1}')"
+ version: "$(ruby -v | awk '{print $2}')"
+ date: "$(ruby -v | sed 's/^.*(\([0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]\).*$/\1/')"
+ platform: "$(ruby -v | sed 's/^.*\[//' | sed 's/\].*$//')"
+ patchlevel: "$(ruby -v | sed 's/^.*(//' | sed 's/).*$//')"
+ full_version: "$(ruby -v)"
+
+homes:
+ gem: "${GEM_HOME-not set}"
+ ruby: "${MY_RUBY_HOME-not set}"
+
+binaries:
+ ruby: "$(which ruby)"
+ irb: "$(which irb)"
+ gem: "$(which gem)"
+
Info
}
function rvm-install-source {
@@ -148,43 +150,43 @@
case "$version" in
1.9|1.9.1) major="1.9" ; minor="1" ; level="${2-243}" ;;
1.9.2) major="1.9" ; minor="2" ; level="${2-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."
+ *) rvm-log-fail "Ruby version '$version' is unknown."
esac
package_name="ruby-$major.$minor-p$level"
url="ftp://ftp.ruby-lang.org/pub/ruby/$major/$package_name.tar.gz"
- info "Installing Ruby from source to: $install_path/$package_name"
+ rvm-log-info "Installing Ruby from source to: $install_path/$package_name"
mkdir -p $install_path/$package_name
pushd $source_path > /dev/null
if [ -d $package_name ] ; then
cd $package_name
else
if [ ! -f "$package_name.tar.gz" ] ; then
- info "\tDownloading $package_name, this may take a while depending on your connection..."
+ rvm-log-info "\tDownloading $package_name, this may take a while depending on your connection..."
curl -O -L -s $url
fi
- info "\tExtracting $package_name..."
+ rvm-log-info "\tExtracting $package_name..."
tar xzf $package_name.tar.gz && cd $package_name
fi
- info "\tConfiguring $package_name using ${configure-'--enable-shared'}, this may take a while depending on your cpu(s)..."
+ rvm-log-info "\tConfiguring $package_name using ${configure-'--enable-shared'}, this may take a while depending on your cpu(s)..."
./configure --prefix=$install_path/$package_name ${configure-'--enable-shared'} > $install_path/$package_name/configure.log 2> $install_path/$package_name/configure.error.log
- info "\tCompiling $package_name, this may take a while, depending on your cpu(s)..."
+ rvm-log-info "\tCompiling $package_name, this may take a while, depending on your cpu(s)..."
make > $install_path/$package_name/make.log 2> $install_path/$package_name/make.error.log
- info "\tInstalling $package_name"
+ rvm-log-info "\tInstalling $package_name"
make install > $install_path/$package_name/install.log 2> $install_path/$package_name/install.error.log
chmod +x $install_path/$package_name/bin/*
# Now install rubygems for this ruby version.
- info "\tInstalling rubygems dedicated to $package_name..."
+ rvm-log-info "\tInstalling rubygems dedicated to $package_name..."
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
@@ -193,14 +195,14 @@
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 > $install_path/$package_name/rubygems.install.log 2> $install_path/$package_name/rubygems.install.error.log
popd > /dev/null
- info "Installation of $package_name complete."
+ rvm-log-info "Installation of $package_name complete."
for gem_name in rake ; do
- info "Installing $gem_name"
+ rvm-log-info "Installing $gem_name"
$install_path/$package_name/bin/gem install $gem_name --no-rdoc --no-ri -q >> $install_path/$package_name/gems.install.log
done
}
function rvm-install-ruby {
@@ -210,29 +212,29 @@
ree)
version=${version-1.8.6}
patchlevel=${patchlevel-20090610}
package_name="ruby-enterprise-$version-$patchlevel"
url="http://rubyforge.org/frs/download.php/58677/$package_name.tar.gz"
- info "Installing Ruby Enterprise Edition from source to: $install_path/$package_name"
+ rvm-log-info "Installing Ruby Enterprise Edition from source to: $install_path/$package_name"
pushd $source_path > /dev/null
if [ -d $package_name ] ; then
cd $package_name
else
if [ ! -f "$package_name.tar.gz" ] ; then
- info "\tDownloading $package_name, this may take a while depending on your connection..."
+ rvm-log-info "\tDownloading $package_name, this may take a while depending on your connection..."
curl -O -L -s $url
fi
- info "\tExtracting $package_name..."
+ rvm-log-info "\tExtracting $package_name..."
tar xzf $package_name.tar.gz && cd $package_name
fi
- info "\tInstalling $package_name, this may take a while, depending on your cpu(s)..."
+ rvm-log-info "\tInstalling $package_name, this may take a while, depending on your cpu(s)..."
mkdir -p $install_path/$package_name
./installer -a $install_path/ruby-enterprise-$version-$patchlevel --dont-install-useful-gems > $install_path/$package_name/install.log 2> $install_path/$package_name/install.error.log
chmod +x $install_path/$package_name/bin/*
- info "\tInstalling rubygems dedicated to $package_name..."
+ rvm-log-info "\tInstalling rubygems dedicated to $package_name..."
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
@@ -240,15 +242,15 @@
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 > $install_path/$package_name/rubygems.install.log 2> $install_path/$package_name/rubygems.install.error.log
- info "Installation of $package_name complete."
+ rvm-log-info "Installation of $package_name complete."
popd > /dev/null
for gem_name in rake ; do
- info "Installing $gem_name"
+ rvm-log-info "Installing $gem_name"
$install_path/$package_name/bin/gem install $gem_name --no-rdoc --no-ri -q >> $install_path/$package_name/gems.install.log
done
;;
jruby)
@@ -256,47 +258,47 @@
unset patchlevel # No patchlevel for jRuby
zipfile="$implementation-bin-$version"
package_name="$implementation-$version"
url="http://dist.codehaus.org/$implementation/$version/$zipfile.zip"
- info "Installing jRuby to: $install_path/$package_name"
+ rvm-log-info "Installing jRuby to: $install_path/$package_name"
mkdir -p $install_path/$package_name
pushd $source_path > /dev/null
if [ -d $zipfile ] ; then
cd $zipfile
else
if [ ! -f "$zipfile.zip" ] ; then
- info "\tDownloading $zipfile, this may take a while depending on your connection..."
+ rvm-log-info "\tDownloading $zipfile, this may take a while depending on your connection..."
curl -O -L -s $url
fi
- info "\tExtracting $zipfile..."
+ rvm-log-info "\tExtracting $zipfile..."
jar xf $zipfile.zip
fi
- info "\tInstalling $package_name..."
+ rvm-log-info "\tInstalling $package_name..."
mkdir -p $install_path/$package_name/bin/
rsync -ag $source_path/$package_name/ $install_path/$package_name/
cd $source_path/$package_name/tool/nailgun && make > $install_path/$package_name/install.nailgun.log 2> $install_path/$package_name/install.error.nailgun.log
popd > /dev/null
chmod +x $install_path/$package_name/bin/*
for binary in jruby jgem jirb ; do
ln -sf $install_path/$package_name/bin/$binary $install_path/$package_name/bin/${binary#j}
done
for gem_name in rake jruby-openssl ; do
- info "Installing $gem_name"
+ rvm-log-info "Installing $gem_name"
$install_path/$package_name/bin/jgem install $gem_name --no-rdoc --no-ri -q >> $install_path/$package_name/gems.install.log
done
;;
ruby)
rvm-install-source ${version-1.8.6} ${patchlevel-$3}
;;
default)
- fail "please specify a ruby implementation to install."
+ rvm-log-fail "please specify a ruby implementation to install."
;;
- *) fail "Ruby implementation '$implementation' is not known."
+ *) rvm-log-fail "Ruby implementation '$implementation' is not known."
esac
}
@@ -308,20 +310,20 @@
jruby)
version="${version-1.3.1}"
if [ "$version" = "1.2.0" -o "$version" = "1.3.1" ] ; then
package_name="jruby*-$version"
else
- fail "Unknown jRuby version: $version"
+ rvm-log-fail "Unknown jRuby version: $version"
fi
;;
ree)
version=${version-1.8.6}
if [ "$version" = "1.8.6" ] ; then
package_name="$install_path/ruby-enterprise-$version-${3-20090610}"
else
- fail "Unknown Ruby Enterprise Edition version: $version"
+ rvm-log-fail "Unknown Ruby Enterprise Edition version: $version"
fi
;;
ruby)
if [ "$version" = "1.8.7" ] ; then
@@ -335,28 +337,28 @@
elif [ "$version" = "1.9.1" -o "$version" = "1.9" ] ; then
package_name="ruby-1.9.1-p${patchlevel-243}"
else
- fail "Unknown ruby version: $version"
+ rvm-log-fail "Unknown ruby version: $version"
fi
;;
*)
- fail "Ruby implementation '$implementation' is not known."
+ rvm-log-fail "Ruby implementation '$implementation' is not known."
esac
if [ ! -z "$package_name" ] ; then
for path in $source_path $install_path ; do
if [ -d $path/$package_name ] ; then
- info "Removing $path/$package_name"
+ rvm-log-info "Removing $path/$package_name"
rm -rf $path/$package_name
fi
done
else
- fail "Cannot uninstall unknown package '$package_name'"
+ rvm-log-fail "Cannot uninstall unknown package '$package_name'"
fi
}
function rvm-use {
@@ -379,22 +381,22 @@
MY_RUBY_HOME="$install_path/jruby-$version"
GEM_HOME="$HOME/.gem/jruby/1.8"
alias ruby_ng="jruby --ng"
alias ruby_ng_server="jruby --ng-server"
else
- fail "Unknown jRuby version: $version"
+ rvm-log-fail "Unknown jRuby version: $version"
fi
;;
ree)
version=${version-1.8.6}
if [ "$version" = "1.8.6" ] ; then
patchlevel="${3-20090610}"
MY_RUBY_HOME="$install_path/ruby-enterprise-$version-$patchlevel"
GEM_HOME="$HOME/.gem/ruby-enterprise/1.8"
else
- fail "Unknown Ruby Enterprise Edition version: $version"
+ rvm-log-fail "Unknown Ruby Enterprise Edition version: $version"
fi
;;
ruby)
if [ "$version" = "1.8.7" ] ; then
@@ -416,22 +418,22 @@
level="${patchlevel-243}"
MY_RUBY_HOME="$install_path/ruby-1.9.1-p$level"
GEM_HOME="$HOME/.gem/ruby/1.9.1"
else
- fail "Unknown ruby version: $version"
+ rvm-log-fail "Unknown ruby version: $version"
fi
;;
*)
- fail "Ruby implementation '$implementation' is not known."
+ rvm-log-fail "Ruby implementation '$implementation' is not known."
esac
if [ ! "$implementation" = "default" ] ; then
if [ ! -d $MY_RUBY_HOME ] ; then
- warn "$implementation $version is not installed."
+ rvm-log-warn "$implementation $version is not installed."
rvm-install-ruby $implementation $version $level
fi
RUBY_VERSION="$($MY_RUBY_HOME/bin/ruby -v | sed 's/^\(.*\) (.*$/\1/')"
export GEM_HOME MY_RUBY_HOME RUBY_VERSION
@@ -442,17 +444,17 @@
eval value=\$${variable}
echo "${variable}='$value' ; export ${variable}" >> $install_path/current
done
fi
- info "Switching to $implementation $version $patchlevel ..."
+ rvm-log-info "Switching to $implementation $version $patchlevel ..."
if [ ! -z "$BASH_VERSION" ] ; then
exec bash -l
elif [ ! -z "$ZSH_VERSION" ] ; then
exec zsh -l
else
- fail "Your shell is not supported bash and zsh are currently supported."
+ rvm-log-fail "Your shell is not supported bash and zsh are currently supported."
fi
}
function rvm-list {
echo -e "\nruby:"
@@ -483,11 +485,11 @@
elif [ "${2-$version}" = "1.9" -o "${2-$version}" = "1.9.1" ] ; then
GEM_HOME="$HOME/.gem/ruby/1.9.1"
else
- fail "Unknown Version: ${2-$version}"
+ rvm-log-fail "Unknown Version: ${2-$version}"
fi
;;
current)
GEM_HOME=$(ruby -r rubygems -e "puts Gem::default_path.compact.first")
;;
@@ -496,17 +498,17 @@
;;
user)
GEM_HOME=$default_gem_path
;;
*)
- fail "Ruby implementation '$implementation' is not known."
+ rvm-log-fail "Ruby implementation '$implementation' is not known."
esac
if [ -d $GEM_HOME ] ; then
echo $GEM_HOME && cd $GEM_HOME
else
- fail "$implementation $version GEM directory does not exist."
+ rvm-log-fail "$implementation $version GEM directory does not exist."
fi
}
function rvm-src-dir {
@@ -515,20 +517,20 @@
jruby)
version=${version-1.3.1}
if [ "${2-$version}" = "1.2.0" -o "${2-$version}" = "1.3.1" ] ; then
src_dir="$source_path/$implementation-$version"
else
- fail "Unknown jRuby version: $version"
+ rvm-log-fail "Unknown jRuby version: $version"
fi
;;
ree)
version=${version-1.8.6}
if [ "${2-$version}" = "1.8.6" -o "${2-$version}" = "1.8" ] ; then
src_dir="$source_path/ruby-enterprise-${2-$version}-"${3-20090610}""
else
- fail "Unknown Ruby Enterprise Edition version: ${2-$version}"
+ rvm-log-fail "Unknown Ruby Enterprise Edition version: ${2-$version}"
fi
;;
ruby)
if [ "${2-$version}" = "1.8.7" ] ; then
@@ -542,27 +544,27 @@
elif [ "${2-$version}" = "1.9" -o "${2-$version}" = "1.9.1" ] ; then
src_dir="$source_path/ruby-1.9.1-p${patchlevel-243}"
else
- fail "unknown Ruby version: ${2-$version}"
+ rvm-log-fail "unknown Ruby version: ${2-$version}"
fi
;;
default)
- warn "Invalid request, rvm cannot change to the default source directory."
+ rvm-log-warn "Invalid request, rvm cannot change to the default source directory."
;;
*)
- fail "Ruby implementation '$implementation' is not known."
+ rvm-log-fail "Ruby implementation '$implementation' is not known."
return 1
esac
if [ -d $src_dir ] ; then
cd $src_dir
else
- fail "$implementation $version source directory does not exist."
+ rvm-log-fail "$implementation $version source directory does not exist."
fi
}
# clones from source implementation/version to current
@@ -578,11 +580,11 @@
else
rvm-gi $gem_dir/cache/$gem_name-$gem_version.gem
fi
done
else
- fail "Unknown $implementation version: $version"
+ rvm-log-fail "Unknown $implementation version: $version"
fi
}
function rvm-version { echo "rvm $rvm_version ($rvm_updated) [$rvm_website]" ; }
@@ -626,11 +628,10 @@
;;
-l|--level) patchlevel="$1" ; shift ;;
-p|--prefix) install_path="$1" ; shift ;;
-s|--source) source_path="$1" ; shift ;; # Undocumented / untested "feature"
-c|--configure) configure="$1" ; shift ;;
- -m|--manager) manager="$1" ; shift ;;
-u|--gemdup) action="gemdup" ; gem_dir="$1" ; shift ;;
-d|--debug) debug=1 ;;
*) rvm-usage ; return 1
esac
done
@@ -638,15 +639,14 @@
if [ -z "$implementation" -a -z "$version" ] ; then
implementation="default"
else
implementation=${implementation-'ruby'}
fi
- username=`whoami`
# TODO: Sanitize user input, ensure that there is a / a the end...
- if [ "$username" = "root" ] ; then
- fail "root user support is not yet implemented."
+ if [ "`whoami`" = "root" ] ; then
+ rvm-log-fail "root user support is not yet implemented."
#prefix_path=${prefix-/usr/local/}
else
prefix_path=${prefix-$HOME/.}
fi
source_path="${source_path-$install_path/src}"
@@ -681,11 +681,10 @@
default_system_gem_path=`cat $install_path/default_system_gem_path`
else
ruby -r rubygems -e "puts Gem::default_path.compact[1] || Gem::default_path.compact.first" > $install_path/default_system_gem_path
fi
-
if [ "$debug" = "1" ] ; then set -x ; fi
case "$action" in
install)
if [ "$implementation" = "all" ] ; then
@@ -710,25 +709,25 @@
gemdup) rvm-gem-dup $implementation $version $patchlevel ;;
info) rvm-info $implementation $version $patchlevel ;;
version) rvm-version ;;
debug)
rvm-version
- info "GEM_HOME: $GEM_HOME\nMY_RUBY_HOME: $MY_RUBY_HOME"
- info "ruby: `which ruby`\ngem: `which gem`\nirb: `which irb`"
- info "PATH:$(echo $PATH | awk -F":" '{print $1":"$2":"$3":"$4":"%5}')"
- info "\n.bash_profile: \n$(cat ~/.bash_profile | tail -n 5)\n"
- info "\n$install_path/current: \n$($install_path/current)\n"
+ rvm-info
+ rvm-log-info "PATH:$(echo $PATH | awk -F":" '{print $1":"$2":"$3":"$4":"%5}')"
+ rvm-log-info ".bash_profile: \n$(cat ~/.bash_profile | tail -n 5)\n"
+ rvm-log-info ".zprofile: \n$(cat ~/.zprofile | tail -n 5)\n"
+ rvm-log-info "$install_path/current: \n$(cat $install_path/current)\n"
return 0
;;
*)
if [ ! -z "$action" ] ; then
- fail "unknown action '$action'"
+ rvm-log-fail "unknown action '$action'"
else
rvm-usage
fi
return 1
esac
- set +x
+ if [ "$debug" = "1" ] ; then set +x ; fi
}