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