scripts/upgrade in rvm-1.0.5 vs scripts/upgrade in rvm-1.0.6
- old
+ new
@@ -8,13 +8,17 @@
echo "Upgrades the latest installed ruby with a given prefix (e.g. ree) to a new version." >&2
exit 1
}
confirm() {
- printf "$1 (Y/n): "
+
local confirmation_response
+
+ printf "$1 (Y/n): "
+
read -r confirmation_response
+
[[ -z "$confirmation_response" ]] || echo $confirmation_response | \grep -qi '^y\|^Y'
}
die_with_error() {
"$rvm_scripts_path/log" "fail" "$1"
@@ -24,38 +28,54 @@
expand_ruby_name() {
"$rvm_scripts_path/tools" strings "$1" | awk -F"$rvm_gemset_separator" '{print $1}'
}
expand_existing_ruby() {
- local prefix="$(expand_ruby_name "$1" | awk -F'-' '{print $1"-"$2}')"
- local ruby_name
+ local prefix ruby_name
+
+ prefix="$(expand_ruby_name "$1" | awk -F'-' '{print $1"-"$2}')"
+
while read -r ruby_name; do
+
if [[ "$ruby_name" != "$expanded_destination"* ]]; then
echo "$ruby_name" ; return 0
fi
+
done < <("$rvm_scripts_path/list" strings | tr ' ' '\n' | sort -ur | \grep "^$prefix" | \grep -v '-head$' | head -n1)
+
return 1
}
upgrade_ruby() {
+
[[ -z "$source_ruby" ]] && die_with_error "Unable to find a source ruby. Please manually provide one."
expanded_source="$(expand_ruby_name "$source_ruby")"
+
[[ -z "$expanded_source" ]] && die_with_error "The source ruby was not a valid ruby string."
confirm "Are you sure you wish to upgrade from $expanded_source to $expanded_destination?" || die_with_error "Cancelling upgrade."
if [[ ! -d "$rvm_rubies_path/$expanded_destination" ]]; then
- "$rvm_scripts_path/log" "info" "Installing new ruby $expanded_destination"
+
+ "$rvm_scripts_path/log" "info" \
+ "Installing new ruby $expanded_destination"
+
$rvm_bin_path/rvm install "$expanded_destination"
+
result="$?" ; [[ "$result" -gt 0 ]] && die_with_error "Unable to install ruby $expanded_destination. Please install it manually to continue." "$result"
+
fi
- "$rvm_scripts_path/log" "info" "Migrating gems from $expanded_source to $expanded_destination"
+ "$rvm_scripts_path/log" "info" \
+ "Migrating gems from $expanded_source to $expanded_destination"
+
"$rvm_scripts_path/migrate" "$expanded_source" "$expanded_destination"
- result="$?" ; [[ "$result" -gt 0 ]] && die_with_error "Error migrating gems." "$result"
+ result="$?"
+ [[ "$result" -gt 0 ]] && die_with_error "Error migrating gems." "$result"
+
"$rvm_scripts_path/log" "info" "Upgrade complete!"
}
args=($*)
destination_ruby="${args[0]}"
@@ -65,8 +85,9 @@
[[ -z "$source_ruby" ]] && usage
expanded_destination="$(expand_ruby_name "$destination_ruby")"
[[ -z "$source_ruby" ]] && die_with_error "The Source ruby was not specified, a valid ruby string, or not found."
+
[[ -z "$expanded_destination" ]] && die_with_error "The destination ruby was not a valid ruby string, or not found."
upgrade_ruby