scripts/selector in rvm-1.0.3 vs scripts/selector in rvm-1.0.4
- old
+ new
@@ -1,17 +1,20 @@
#!/usr/bin/env bash
# __rvm_select implementation version patch_level
__rvm_select() {
+
+ # Set Variable Defaults
rvm_ruby_interpreter=${rvm_ruby_interpreter:-""}
rvm_head_flag=${rvm_head_flag:-0}
rvm_install_on_use_flag=${rvm_install_on_use_flag:-0}
rvm_ruby_version=${rvm_ruby_version:-""}
rvm_ruby_patch_level=${rvm_ruby_patch_level:-""}
rvm_ruby_revision=${rvm_ruby_revision:-""}
rvm_ruby_name=${rvm_ruby_name:-""}
rvm_ruby_gem_home=${rvm_ruby_gem_home:-""}
+
export GEM_HOME GEM_PATH BUNDLE_PATH MY_RUBY_HOME RUBY_VERSION
if [[ -z "${rvm_ruby_string:-""}" ]] ; then
rvm_ruby_string="${rvm_ruby_interpreter}"
[[ -n "$rvm_ruby_version" ]] && rvm_ruby_string="$rvm_ruby_string-$rvm_ruby_version"
@@ -25,20 +28,24 @@
rvm_archive_extension="tar.gz"
case "$rvm_ruby_interpreter" in
macruby)
if [[ "Darwin" = "$(uname)" ]] ; then
+
rvm_ruby_package_name=${rvm_ruby_interpreter}-${rvm_ruby_version}
+
if [[ $rvm_head_flag -eq 1 ]] ; then
rvm_ruby_version="" ; rvm_ruby_tag=""
rvm_ruby_revision="head"
__rvm_db "macruby_repo_url" "rvm_ruby_repo_url"
rvm_url="$rvm_ruby_repo_url"
+
elif [[ "nightly" = "$rvm_ruby_version" ]] ; then
__rvm_db "macruby_nightly_url" "rvm_url"
rvm_ruby_package_name="${rvm_ruby_interpreter}_nightly-${rvm_ruby_version}"
rvm_ruby_package_file="$rvm_ruby_package_name"
+
else
__rvm_db "macruby_version" "rvm_ruby_version"
__rvm_db "macruby_url" "rvm_url"
rvm_ruby_package_name="MacRuby%20${rvm_ruby_version}.zip"
rvm_ruby_package_file="$rvm_ruby_package_name"
@@ -53,48 +60,55 @@
rbx|rubinius)
rvm_archive_extension="tar.gz"
rvm_ruby_interpreter="rbx"
rvm_ruby_version=${rvm_ruby_version:-$(__rvm_db "rbx_version")}
rvm_ruby_repo_url=${rvm_rbx_repo_url:-$(__rvm_db "rubinius_repo_url")}
+
if [[ $rvm_head_flag -eq 0 ]] ; then
rvm_ruby_patch_level=${rvm_ruby_patch_level:-$(__rvm_db "rbx_patch_level")}
rvm_ruby_string="${rvm_ruby_string/-prc/-rc}"
rvm_ruby_string="$(echo "$rvm_ruby_string" | sed 's#-p*#-#')"
rvm_ruby_package_file="$(echo "rubinius-${rvm_ruby_version}-${rvm_ruby_patch_level}.${rvm_archive_extension}" | sed 's#-p*#-#' )"
__rvm_db "rbx_url" "rvm_url"
rvm_url="$rvm_url/$rvm_ruby_package_file"
+
else
rvm_ruby_patch_level="" ; rvm_ruby_version=""
fi
;;
jruby)
rvm_ruby_patch_level=""
+
if [[ $rvm_head_flag -eq 1 ]] ; then
rvm_ruby_version="head"
rvm_ruby_repo_url="${rvm_ruby_repo_url:-$(__rvm_db "jruby_repo_url")}"
rvm_url="${rvm_ruby_repo_url:-$(__rvm_db "jruby_repo_url")}"
+
else
rvm_archive_extension="tar.gz"
rvm_ruby_version="${rvm_ruby_version:-"$(__rvm_db "jruby_version")"}"
jruby_url="$(__rvm_db "jruby_url")"
rvm_ruby_package_file="${rvm_ruby_interpreter}-bin-${rvm_ruby_version}"
rvm_ruby_package_name="${rvm_ruby_interpreter}-${rvm_ruby_version}"
rvm_url="${jruby_url}/${rvm_ruby_version}/${rvm_ruby_package_file}.tar.gz"
jruby_url=""
fi
+
alias jruby_ng="jruby --ng"
alias jruby_ng_server="jruby --ng-server"
;;
maglev)
rvm_ruby_patch_level=""
maglev_url="$(__rvm_db "maglev_url")"
+
if [[ $rvm_head_flag -eq 1 ]] ; then
rvm_ruby_version="head"
rvm_ruby_repo_url="${rvm_ruby_repo_url:-$(__rvm_db "maglev_repo_url")}"
rvm_url="${rvm_ruby_repo_url:-$(__rvm_db "maglev_repo_url")}"
+
else
system="$(uname -s)"
arch="$(uname -m)"
rvm_ruby_package_file="MagLev-${rvm_ruby_version}.${system}-${arch}"
rvm_gemstone_package_file="GemStone-${rvm_ruby_version}.${system}-${arch}"
@@ -106,36 +120,41 @@
fi
;;
ironruby)
rvm_ruby_patch_level=""
+
if [[ ${rvm_head_flag:-0} -eq 1 ]] ; then
rvm_ruby_version="head"
rvm_ruby_package_name="${rvm_ruby_string}"
rvm_ruby_repo_url="${rvm_ruby_repo_url:-$(__rvm_db "ironruby_repo_url")}"
rvm_url="${rvm_ruby_repo_url:-$(__rvm_db "ironruby_repo_url")}"
+
else
rvm_archive_extension="zip"
rvm_ruby_version=${rvm_ruby_version:-"$(__rvm_db "ironruby_version")"}
rvm_ruby_package_name="${rvm_ruby_interpreter}-${rvm_ruby_version}"
rvm_ruby_package_file="${rvm_ruby_interpreter}-${rvm_ruby_version}.${rvm_archive_extension}"
rvm_url="$(__rvm_db "ironruby_${rvm_ruby_version}_url")${rvm_ruby_package_file}"
fi
+
export rvm_ruby_version rvm_ruby_string rvm_ruby_package_name rvm_ruby_repo_url rvm_url rvm_archive_extension
;;
ree)
rvm_ruby_interpreter=ree
rvm_ruby_version=${rvm_ruby_version:-"$(__rvm_db "ree_version")"}
+
if [[ ! -z "$rvm_ruby_patch_level" ]] ; then
rvm_ruby_patch_level="$(echo $rvm_ruby_patch_level | sed 's#^p##')"
fi
if [[ "$rvm_ruby_version" != "head" ]] ; then
if [[ ! -z "$rvm_ruby_revision" ]] ; then
rvm_ruby_patch_level="" ; rvm_ruby_package_file=""
rvm_ruby_package_name="ree-$rvm_ruby_version-$rvm_ruby_revision"
+
else
rvm_ruby_package_file="ruby-enterprise-$rvm_ruby_version-$rvm_ruby_patch_level"
rvm_url="$(__rvm_db "${rvm_ruby_interpreter}_${rvm_ruby_version}_url")/$rvm_ruby_package_file.tar.gz"
fi
fi
@@ -156,22 +175,26 @@
;;
ruby)
if [[ -z "${rvm_ruby_version:-""}" && ${rvm_head_flag:-0} -eq 0 ]]; then
"$rvm_scripts_path/log" "fail" "Unknown ruby version: $rvm_ruby_version"
+
else
rvm_ruby_repo_url="${rvm_ruby_repo_url:-"$(__rvm_db "ruby_repo_url")"}"
+
if [[ ${rvm_head_flag:-0} -eq 0 ]]; then
rvm_archive_extension="tar.bz2"
fi
fi
;;
current)
ruby_binary="$(command -v ruby)"
+
if [[ $? -eq 0 ]] && "$rvm_scripts_path/match" "$ruby_binary" "rvm" ; then
rvm_ruby_string="$(dirname "$ruby_binary" | xargs dirname | xargs basename)"
+
else
rvm_ruby_interpreter="system"
fi
;;
@@ -181,10 +204,11 @@
*)
if [[ ! -z "$MY_RUBY_HOME" ]] ; then
rvm_ruby_string=$(basename $MY_RUBY_HOME)
__rvm_select
+
else
if [[ -z "$rvm_ruby_string" ]] ; then
"$rvm_scripts_path/log" "fail" "Ruby implementation '$rvm_ruby_interpreter' is not known."
return 1
fi
@@ -192,10 +216,11 @@
esac
__rvm_gemset_select
if [[ -n "$rvm_ruby_interpreter" && "system" != "$rvm_ruby_interpreter" && "default" != "$rvm_ruby_interpreter" ]] ; then
+
if [[ ! -z "$rvm_ruby_version" ]] ; then
rvm_release_version="${rvm_ruby_version/.*/}"
rvm_major_version=${rvm_ruby_version%.*} ; rvm_major_version=${rvm_major_version#*.}
rvm_minor_version="${rvm_ruby_version//*.}"
fi
@@ -245,31 +270,38 @@
rvm_ruby_alias="${rvm_ruby_alias:-""}"
local new_path=""
if [[ $rvm_ruby_selected_flag -eq 0 ]] ; then __rvm_select "$@" ; fi
+
if [[ -z "$rvm_ruby_interpreter" ]] ; then rvm_ruby_interpreter="system" ; fi
if [[ "system" = "$rvm_ruby_interpreter" ]] ; then
unset GEM_HOME GEM_PATH BUNDLE_PATH MY_RUBY_HOME RUBY_VERSION IRBRC
new_path="$rvm_bin_path:$(__rvm_remove_rvm_from_path ; printf "$PATH")"
+
if [[ -s $rvm_config_path/system ]] ; then
+
\grep "MY_RUBY_HOME='$rvm_rubies_path" "$rvm_config_path/system" > /dev/null
+
if [[ $? -eq 0 ]] ; then
[[ -f "$rvm_config_path/system" ]] && \rm -f $rvm_config_path/system # 'system' should *not* point to an rvm ruby.
else
source "$rvm_config_path/system"
fi
fi
# Check binaries, remove under the condition they're symlinks.
local binary full_binary_path
if [[ "$rvm_selfcontained" = "0" ]] ; then
+
for binary in ruby gem irb ri rdoc rake erb testrb ; do
+
full_binary_path="$rvm_bin_path/$binary"
+
[[ -L "$full_binary_path" ]] && \rm -f "$full_binary_path"
done
fi
[[ ${rvm_verbose_flag:-0} -eq 1 ]] && "$rvm_scripts_path/log" "info" "Now using system ruby."
@@ -537,22 +569,26 @@
else
patch_level="$(__rvm_db "${rvm_ruby_interpreter}_${rvm_ruby_version}_patch_level")"
if [[ -n "${patch_level:-""}" ]] ; then
+
if [[ "ree" = "$rvm_ruby_interpreter" ]] || [[ "rbx" = "$rvm_ruby_interpreter" ]] ; then
rvm_ruby_patch_level="${patch_level}"
else
rvm_ruby_patch_level="p${patch_level}"
fi
fi
if [[ -n "${rvm_ruby_patch_level:-""}" ]] ; then
+
rvm_ruby_patch_level="$(echo $rvm_ruby_patch_level | sed 's#^pp#p#')"
rvm_ruby_string="${rvm_ruby_string}-${rvm_ruby_patch_level}"
+
if [[ "ree" = "${rvm_ruby_interpreter:-""}" ]] || [[ "rbx" = "${rvm_ruby_interpreter:-""}" ]] ; then
rvm_ruby_string="$(echo $rvm_ruby_string | sed 's#-p*#-#')"
+
else
rvm_ruby_string="$(echo $rvm_ruby_string | sed 's#-pp#-p#')"
rvm_ruby_string="$(echo $rvm_ruby_string | sed 's#-prc#-rc#')"
fi
fi
@@ -573,13 +609,15 @@
rvm_gemset_name=${rvm_gemset_name:-""}
rvm_ruby_global_gems_path="$rvm_gems_path/${rvm_ruby_string}${rvm_gemset_separator}global"
if [[ -z "${rvm_gemset_name:-""}" ]] ; then
+
# No longer defaulting to 'sticky' gem sets.
# Set 'rvm_sticky_flag=1' in ~/.rvmrc to enable.
if [[ ${rvm_sticky_flag:-0} -eq 1 ]] ; then
+
if [[ -n "${GEM_HOME:-""}" ]] ; then
rvm_gemset_name=$(echo $GEM_HOME | xargs basename | awk -F${rvm_gemset_separator} '{print $2}')
fi
if [[ -n "${rvm_ruby_gem_home:-""}" ]] ; then
@@ -587,30 +625,37 @@
fi
fi
if [[ -n "${rvm_gemset_name:-""}" ]] && ! "$rvm_scripts_path/match" "$rvm_gemset_name" "^[0-9]\.[0-9]" ; then
rvm_ruby_gem_home="$rvm_gems_path/${rvm_ruby_string}${rvm_gemset_separator}${rvm_gemset_name}"
+
else
if [[ -n "${rvm_ruby_string:-""}" ]] && [[ "${rvm_ruby_interpreter:-""}" != "system" ]] ; then
rvm_ruby_gem_home="$rvm_gems_path/$rvm_ruby_string"
+
elif [[ -z "${GEM_HOME:-""}" ]] && [[ -n "$(command -v gem)" ]] ; then
rvm_ruby_gem_home=$(gem env gemdir)
+
elif [[ -n "${GEM_HOME:-""}" ]] ; then
rvm_ruby_gem_home="$GEM_HOME"
+
else
rvm_ruby_gem_home=""
fi
fi
else
local gemset=$(echo "$rvm_ruby_gem_home" | awk -F'@' '{print $NF}')
+
if [[ -z "${rvm_ruby_string:-""}" && -n "${GEM_HOME:-""}" && -n "${GEM_HOME/@*/}" ]] ; then
rvm_ruby_string=$(basename ${GEM_HOME/@*/})
fi
if [[ -n "${rvm_ruby_string:-""}" ]] ; then
+
if [[ -z "${rvm_ruby_gem_home:-""}" || -n "${gemset:-""}" ]] ; then
rvm_ruby_gem_home="$rvm_gems_path/${rvm_ruby_string}${rvm_gemset_separator}${rvm_gemset_name}"
+
elif [[ -n "${gemset:-""}" && "${rvm_gemset_name:-""}" != "${gemset:-""}" ]] ; then
rvm_ruby_gem_home="$rvm_gems_path/${rvm_ruby_string}${rvm_gemset_separator}${rvm_gemset_name}"
fi
else
"$rvm_scripts_path/log" "error" "Gemsets can not be used with non rvm controlled rubies (currently)."
@@ -639,38 +684,42 @@
# Ensure that the ruby gem home exists.
\mkdir -p "$rvm_ruby_gem_home"
if [[ -n "${rvm_ruby_gem_home:-""}" ]] && echo "$rvm_ruby_gem_home" | \grep -q 'rvm'; then
if __rvm_using_gemset_globalcache && [[ ! -L "$rvm_ruby_gem_home/cache" ]]; then
- mv "$rvm_ruby_gem_home/cache/"*.gem "$rvm_gems_cache_path/" 2>/dev/null
+ \mv "$rvm_ruby_gem_home/cache/"*.gem "$rvm_gems_cache_path/" 2>/dev/null
\rm -rf "$rvm_ruby_gem_home/cache"
\ln -nfs "$rvm_gems_cache_path" "$rvm_ruby_gem_home/cache"
fi
fi
export rvm_ruby_gem_path rvm_ruby_gem_home
}
# Use a gemset specified by 'rvm_ruby_gem_home'
__rvm_gemset_use() {
- rvm_verbose_flag=${rvm_verbose_flag:-0}
- rvm_ruby_gem_home=${rvm_ruby_gem_home:-""}
+ if [[ -z "${rvm_gemset_name:-""}" ]] ; then
+ "$rvm_scripts_path/log" "error" "Gemset was not given.\n Usage:\n rvm gemset use <gemsetname>\n"
+ return 1
+ fi
- if [[ -n "$rvm_ruby_gem_home" ]] ; then
+ if [[ -n "${rvm_ruby_gem_home:-""}" ]] ; then
+
if [[ ! -d "$rvm_ruby_gem_home" ]] ; then
- if [[ "$rvm_gemset_create_on_use_flag" -eq 1 ]] || [[ "$rvm_create_flag" -eq 1 ]]; then
+
+ if [[ ${rvm_gemset_create_on_use_flag:-0} -eq 1 || ${rvm_create_flag:-0} -eq 1 ]] ; then
"$rvm_scripts_path/gemsets" create "$rvm_gemset_name"
else
"$rvm_scripts_path/log" "error" "Gemset '$rvm_gemset_name' does not exist, rvm gemset create '$rvm_gemset_name' first."
return 1
fi
fi
- if [[ "$rvm_interactive_flag" -eq 1 ]] || [[ "$rvm_verbose_flag" -eq 1 ]] ; then
+ if [[ ${rvm_interactive_flag:-0} -eq 1 && ${rvm_verbose_flag:-1} -ne 0 ]] ; then
"$rvm_scripts_path/log" "info" "Now using gemset '${rvm_gemset_name:-default}'"
fi
- rvm_ruby_gem_home="$(echo "$GEM_HOME" | sed 's/'${rvm_gemset_separator}'.*$//')${rvm_gemset_separator}${rvm_gemset_name}"
+ rvm_ruby_gem_home="$(echo "${GEM_HOME:-""}" | sed 's/'${rvm_gemset_separator}'.*$//')${rvm_gemset_separator}${rvm_gemset_name}"
GEM_HOME="$rvm_ruby_gem_home"
BUNDLE_PATH="$rvm_ruby_gem_home"
GEM_PATH="$rvm_ruby_gem_home/bin:$(echo "$GEM_HOME" | sed 's/'${rvm_gemset_separator}'.*$//')${rvm_gemset_separator}global/bin"
export rvm_ruby_gem_home GEM_HOME BUNDLE_PATH GEM_PATH