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) > "