scripts/gems in rvm-0.0.65 vs scripts/gems in rvm-0.0.66
- old
+ new
@@ -146,15 +146,18 @@
elif [[ -f "system.gems" ]] ; then
rvm_file_name="system.gems"
fi
fi
+ mkdir -p "$rvm_gem_path/cache"
+
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#.gems.*$##' 2> /dev/null)
+
while read line
- do # Keep this on 2nd line :( bash fail.
+ do # Keep this on 2nd line :(
# 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}')"
if match "$gem" "\.gem$" ; then
gem_name="$(basename $gem | sed 's#\.gem##' | awk -F'-' '{$NF=NULL;print}')"
@@ -175,15 +178,25 @@
gem_file_name="${gem_name/ /}*.gem"
else # version
gem_file_name="${gem_name/ /}-${gem_version/ /}.gem"
fi
- if [[ -z "$rvm_force_flag" ]] && [[ -f "${rvm_ruby_gem_home}/specifications/${gem_name/ /}-${gem_version/ /}.gemspec" ]] ; then
+ if [[ -z "$rvm_force_flag" ]] && [[ -f "${rvm_ruby_gem_home}/specifications/${gem_file_name}" ]] ; then
unset gem
__rvm_log "warn" "$(__color "yellow")$gem_name $gem_version$(__color "none") exists, skipping (--force to re-install)"
else
- cache_file="${cache_file:-$(/bin/ls -t "${rvm_gem_path}/*/*/cache/${gem_file_name}*" 2> /dev/null | head -n1)}"
+ set -x
+ if [[ -f "$rvm_gem_path/cache/${gem_file_name}" ]] ; then
+ cache_file="$rvm_gem_path/cache/${gem_file_name}"
+ else
+ cache_file="${cache_file:-$(/bin/ls -t "${rvm_gem_path}/*/*/cache/${gem_file_name}*" 2> /dev/null | head -n1)}"
+ if [[ -f "$cache_file" ]] ; then
+ cp "$cache_file" "$rvm_gem_path/cache/$(basename "$cache_file")"
+ fi
+ fi
+ set +x
+
if [[ -z "$cache_file" ]] ; then
if [[ -f "$gem_file_name" ]] ; then
gem="$gem_file_name"
elif [[ -z "${gem_version/ /}" ]] ; then
gem="${gem_name/ /}"
@@ -191,13 +204,13 @@
gem="${gem_name/ /} -v $gem_version"
fi
else # cached
gem_file_name="$(basename "$cache_file")"
gem_string="$(echo "$gem_file_name" | sed 's#\.gem$##')"
+
# TODO: Switch this to use match
if [[ ! -z "$(echo "$rvm_ruby_gem_list" | awk "/${gem_name/ /} \(.*$gem_version/{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
fi
else
gem="$cache_file"
fi