scripts/gems in rvm-0.0.58 vs scripts/gems in rvm-0.0.59

- old
+ new

@@ -1,8 +1,10 @@ #!/bin/bash + __rvm_gems() { - if [ -z "$rvm_selected_flag" ] ; then __rvm_select $* ; fi + unset GEM_PATH + if [ -z "$rvm_ruby_selected_flag" ] ; then __rvm_select $* ; fi if [ ! -z "$rvm_use_flag" ] ; then __rvm_gems_use elif [ ! -z "$rvm_load_flag" ] ; then __rvm_gems_load @@ -21,18 +23,20 @@ fi } __rvm_gems_select() { if [ -z "$rvm_gem_set_name" ] ; then - if [ ! -z "$rvm_ruby_gem_home" -a ! -z "$rvm_ruby_version" ] ; then - rvm_gem_set_name=$(echo $rvm_ruby_gem_home | xargs basename | sed "s/${rvm_ruby_version}[-]*//") + if [ ! -z "$GEM_HOME" ] ; then + rvm_gem_set_name=$(echo $GEM_HOME | xargs basename | awk -F'%' '{print $2}') fi - if [ -z "$rvm_gem_set_name" ] ; then unset rvm_gem_set_name ; fi + if [ ! -z "$rvm_ruby_gem_home" ] ; then + rvm_gem_set_name=$(echo $rvm_ruby_gem_home | xargs basename | awk -F'%' '{print $2}') + fi - if [ ! -z "$rvm_gem_set_name" -a ! -z "$(echo $rvm_gem_set_name | awk '/^\d\.\d/')" ] ; then - rvm_ruby_gem_home="$rvm_gem_path/$rvm_ruby_interpreter/$rvm_ruby_version-$rvm_gem_set_name" + if [ ! -z "$rvm_gem_set_name" ] && [[ ! "$rvm_gem_set_name" =~ ^\d\.\d ]] ; then + rvm_ruby_gem_home="$rvm_gem_path/$rvm_ruby_interpreter/$rvm_ruby_version%$rvm_gem_set_name" else if [ ! -z "$rvm_ruby_interpreter" -a ! -z "$rvm_ruby_version" -a "$rvm_ruby_interpreter" != "system" ] ; then rvm_ruby_gem_home="$rvm_gem_path/$rvm_ruby_interpreter/$rvm_ruby_version" elif [ -z "$GEM_HOME" ] ; then rvm_ruby_gem_home=$(gem env gemdir) @@ -40,44 +44,56 @@ rvm_ruby_gem_home="$GEM_HOME" else __rvm_log "error" "Cannot select gem home, something definitely wrong :/" fi fi + if [ -z "$rvm_gem_set_name" ] ; then unset rvm_gem_set_name ; fi else - rvm_ruby_gem_home="$rvm_gem_path/$rvm_ruby_interpreter/$rvm_ruby_version-$rvm_gem_set_name" + rvm_ruby_gem_home="$rvm_gem_path/$rvm_ruby_interpreter/$rvm_ruby_version%$rvm_gem_set_name" fi } __rvm_gems_use() { - __rvm_gems_select ; mkdir -p "$rvm_ruby_gem_home" ; GEM_HOME="$rvm_ruby_gem_home" ; export GEM_HOME + mkdir -p "$rvm_ruby_gem_home" ; GEM_HOME="$rvm_ruby_gem_home" ; export GEM_HOME } __rvm_gems_name() { - __rvm_gems_select ; echo "$rvm_gem_set_name" + echo "$rvm_gem_set_name" } __rvm_gems_dir() { - __rvm_gems_select ; echo "$rvm_ruby_gem_home" + echo "$rvm_ruby_gem_home" } __rvm_gems_list() { - __rvm_gems_select ; gem list + for gemdir in "$rvm_gem_path/$rvm_ruby_interpreter/$rvm_ruby_version%"* ; do + echo "$gemdir" | awk -F'%' '{print $2}' + done } __rvm_gems_clear() { __rvm_gems_use if [ -d "$rvm_ruby_gem_home" -a "$rvm_ruby_gem_home" != '/' ] ; then rm -rf "$rvm_ruby_gem_home" fi } __rvm_gems_dump() { - if [ -z "$rvm_selected_flag" ] ; then __rvm_select $* ; fi - __rvm_gems_select - rvm_gem_set_name="${rvm_gem_set_name:-"default"}" - rvm_file_name="${rvm_file_name:-"$rvm_gem_set_name.gems"}" + if [ ! -z "$rvm_ruby_gem_home" ] ; then + GEM_HOME="$rvm_ruby_gem_home" ; export GEM_HOME ; + GEM_PATH="$rvm_ruby_gem_home" ; export GEM_PATH ; + fi + if [ -z "$rvm_file_name" ] ; then + if [ ! -z "$rvm_gem_set_name" ] ; then + rvm_file_name="$rvm_gem_set_name.gems" + else + rvm_file_name="default.gems" + fi + fi + + touch $rvm_file_name echo "# $rvm_file_name generated gem dump file. Note that any env variable settings will be missing. Append these after using a ';' field separator" > $rvm_file_name for gem in $(gem list | sed 's/[\(|\)]//g' | sed 's/, /,/g' | tr ' ' ';') ; do name="$(echo $gem | awk -F';' '{print $1}')" if [ -z "$rvm_latest_flag" ] ; then @@ -90,73 +106,90 @@ fi ; unset name done ; unset file_name } __rvm_gems_load() { - if [ -z "$rvm_selected_flag" ] ; then __rvm_select $* ; fi - __rvm_gems_select - rvm_gem_set_name="${rvm_gem_set_name:-"default"}" - rvm_file_name="${rvm_file_name:-"$rvm_gem_set_name.gems"}" + if [ ! -z "$rvm_ruby_gem_home" ] ; then + GEM_HOME="$rvm_ruby_gem_home" ; export GEM_HOME ; + GEM_PATH="$rvm_ruby_gem_home" ; export GEM_PATH ; + fi - echo "Loading $rvm_file_name file..." - rvm_ruby_gem_list=$(/bin/ls $rvm_ruby_gem_home/specifications/ 2> /dev/null | sed 's/\.gemspec$//' 2> /dev/null) - while read line - do # Keep this on 2nd line :( bash fail. - # TODO: Switch to a different field separator than ; to allow for evals - gem="$(echo $line | awk -F';' '{print $1}')" - gem_prefix="$(echo $line | awk -F';' '{print $2}')" - gem_name="$(echo $gem | awk '{print $1}')" - gem_version="$(echo $gem | sed 's/^.*-v[=]*[ ]*//' | awk '{print $1}')" - gem_postfix="$(echo $gem | sed "s/$gem_name//" | sed "s/-v[=]*[ ]*$gem_version//")" - - if [ -f "$gem" ] ; then - gem_file_name="${gem}" - elif [ -z "$gem_version" ] ; then # no version - gem_file_name="${gem_name}*.gem" - else # version - gem_file_name="$gem_name-$gem_version.gem" + if [ -z "$rvm_file_name" ] ; then + if [ -f "$rvm_gem_set_name.gems" ] ; then + rvm_file_name="$rvm_gem_set_name.gems" + elif [ -f "default.gems" ] ; then + rvm_file_name="default.gems" + elif [ -f "system.gems" ] ; then + rvm_file_name="system.gems" fi + fi - cache_file=$(/bin/ls -t "$rvm_gem_path/*/*/cache/${gem_file_name}*" 2> /dev/null | head -n1) - if [ -z "$cache_file" ] ; then - if [ -z "$gem_version" ] ; then - gem="$gem_name" - else - gem="$gem_name -v $gem_version" + if [ -f "$rvm_file_name" ] ; then + echo "Loading $rvm_file_name file..." + rvm_ruby_gem_list=$(/bin/ls $rvm_ruby_gem_home/specifications/ 2> /dev/null | sed 's/\.gemspec$//' 2> /dev/null) + while read line + do # Keep this on 2nd line :( bash fail. + # TODO: Switch to a different field separator than ; to allow for evals + gem="$(echo $line | awk -F';' '{print $1}')" + gem_prefix="$(echo $line | awk -F';' '{print $2}')" + gem_name="$(echo $gem | awk '{print $1}')" + gem_version="$(echo $gem | sed 's/^.*-v[=]*[ ]*//' | awk '{print $1}')" + gem_postfix="$(echo $gem | sed "s/$gem_name//" | sed "s/-v[=]*[ ]*$gem_version//")" + + if [ -f "$gem" ] ; then + gem_file_name="${gem}" + elif [[ "$gem" =~ ".gem$" ]] ; then + gem_file_name="${gem}" + elif [ -z "$gem_version" ] ; then # no version + gem_file_name="${gem_name}*.gem" + else # version + gem_file_name="$gem_name-$gem_version.gem" fi - else # cached - gem_file_name="$(basename $cache_file)" - gem_string="$(echo "$gem_file_name" | sed 's/\.gem$//')" - if [ ! -z "$(echo "$rvm_ruby_gem_list" | awk "/$gem_string/{print}")" ] ; then - if [ ! -z "$rvm_force_flag" ] ; then - cp $cache_file $rvm_temp_path/$gem_file_name - gem="$rvm_temp_path/$gem_file_name" # install as a named local gem + + cache_file=$(/bin/ls -t "$rvm_gem_path/*/*/cache/${gem_file_name}*" 2> /dev/null | head -n1) + if [ -z "$cache_file" ] ; then + if [ -f "$gem_file_name" ] ; then + gem="$gem_file_name" + elif [ -z "$gem_version" ] ; then + gem="$gem_name" else - unset gem - __rvm_log "info" "$gem_name $gem_version is already installed, skipping. (use --force to force these to install regardless)" + gem="$gem_name -v $gem_version" fi - else - gem="$cache_file" + else # cached + gem_file_name="$(basename $cache_file)" + gem_string="$(echo "$gem_file_name" | sed 's/\.gem$//')" + if [ ! -z "$(echo "$rvm_ruby_gem_list" | awk "/$gem_string/{print}")" ] ; then + #if [[ $rvm_ruby_gem_list =~ $gem_string ]] ; then + if [ ! -z "$rvm_force_flag" ] ; then + cp $cache_file $rvm_temp_path/$gem_file_name + gem="$rvm_temp_path/$gem_file_name" # install as a named local gem + else + unset gem + __rvm_log "info" "$gem_name $gem_version is already installed, skipping. (use --force to force these to install regardless)" + fi + else + gem="$cache_file" + fi fi - fi - if [ ! -z "$gem" ] ; then - # TODO: Set vars if fourth field is non-empty (means that there are conditional statements to execute in the gem install line. - if [ -z "$vars" ] ; then - GEM_HOME="$rvm_ruby_gem_home" GEM_PATH="$rvm_ruby_gem_home" $gem_prefix $rvm_ruby_home/bin/gem install --no-rdoc --no-ri -q $gem $gem_postfix - else - eval "GEM_HOME='$rvm_ruby_gem_home' GEM_PATH='$rvm_ruby_gem_home' $gem_prefix $rvm_ruby_home/bin/gem install --no-rdoc --no-ri -q $gem $gem_postfix" + if [ ! -z "$gem" ] ; then + # TODO: Set vars if fourth field is non-empty (means that there are conditional statements to execute in the gem install line. + if [ -z "$vars" ] ; then + GEM_HOME="$rvm_ruby_gem_home" GEM_PATH="$rvm_ruby_gem_home" $gem_prefix $rvm_ruby_home/bin/gem install --no-rdoc --no-ri -q $gem $gem_postfix + else + eval "GEM_HOME='$rvm_ruby_gem_home' GEM_PATH='$rvm_ruby_gem_home' $gem_prefix $rvm_ruby_home/bin/gem install --no-rdoc --no-ri -q $gem $gem_postfix" + fi fi - fi - unset gem gem_prefix gem_name gem_version gem_file_name gem_postfix cache_file gem_file_name gem_string - done < <(awk '/^[\.\/a-zA-Z]/{print}' "$rvm_file_name") + unset gem gem_prefix gem_name gem_version gem_file_name gem_postfix cache_file gem_file_name gem_string + done < <(awk '/^[\.\/a-zA-Z]/{print}' "$rvm_file_name") + else + __rvm_log "error" "$rvm_file_name does not exist to load from." + fi } __rvm_gems_delete () { - if [ -z "$rvm_selected_flag" ] ; then __rvm_select $* ; fi - __rvm_gems_select if [ ! -z "$rvm_gem_set_name" ] ; then - gemdir="$rvm_gem_path/$rvm_ruby_interpreter/$rvm_ruby_version-$rvm_gem_set_name" + gemdir="$rvm_gem_path/$rvm_ruby_interpreter/$rvm_ruby_version%$rvm_gem_set_name" if [ -d "$gemdir" -a ! -z "$rvm_force_flag" ] ; then rm -rf "$gemdir" elif [ -d "$gemdir" ] ; then __rvm_log "warn" "Are you SURE you wish to remove the installed gems '$rvm_gem_set_name ' ($gemdir)?" echo -n "(anything other than 'yes' will cancel) > "