wayneeseguin-rvm 0.0.40 → 0.0.42
Sign up to get free protection for your applications and to get access to all the features.
- data/config/db +4 -4
- data/examples/rvmrc +3 -0
- data/lib/VERSION.yml +4 -0
- data/rvm.gemspec +3 -2
- data/scripts/rvm-cli +156 -137
- data/scripts/rvm-install +8 -11
- data/scripts/rvm-prompt +1 -1
- data/scripts/rvm-ruby-installer +81 -54
- data/scripts/rvm-selector +23 -26
- data/scripts/rvm-update +8 -11
- data/scripts/rvm-utility +139 -132
- metadata +3 -2
data/scripts/rvm-update
CHANGED
@@ -14,10 +14,16 @@ if [ ! -d "$source_dir" ] ; then unset source_dir ; fi
|
|
14
14
|
source_dir="${source_dir:-$cwd}"
|
15
15
|
rvm_dir=~/.rvm
|
16
16
|
|
17
|
-
echo -e "\nInstalling rvm
|
17
|
+
echo -e "\nInstalling rvm to ~/.rvm/ ..."
|
18
18
|
for dir in src scripts bin log archives config gems examples ; do
|
19
19
|
mkdir -p $rvm_dir/$dir
|
20
20
|
done
|
21
|
+
for dir in config scripts examples lib ; do
|
22
|
+
mkdir -p $rvm_dir/$dir
|
23
|
+
/bin/cp -r $source_dir/$dir/ $rvm_dir/$dir
|
24
|
+
done
|
25
|
+
cp $source_dir/scripts/rvm-prompt $rvm_dir/bin/
|
26
|
+
chmod +x $rvm_dir/bin/rvm-prompt
|
21
27
|
|
22
28
|
# State what is required to use rvm
|
23
29
|
echo -e "\n\033[0;32mrvm\033[0m is a shell script that allows a user to manage multiple ruby versions in their own account."
|
@@ -116,15 +122,6 @@ if [ -f ~/.rvm/bin/rvm ] ; then
|
|
116
122
|
rm -f ~/.rvm/bin/rvm
|
117
123
|
fi
|
118
124
|
|
119
|
-
for dir in config scripts examples ; do
|
120
|
-
mkdir -p $rvm_dir/$dir
|
121
|
-
for file in `/bin/ls $source_dir/$dir/`; do
|
122
|
-
cp $source_dir/$dir/$file $rvm_dir/$dir/$file
|
123
|
-
done
|
124
|
-
done
|
125
|
-
cp $source_dir/scripts/rvm-prompt $rvm_dir/bin/
|
126
|
-
cp $source_dir/VERSION.yml $rvm_dir/
|
127
|
-
|
128
125
|
system=`uname`
|
129
126
|
if [ "$system" = "Linux" ] ; then
|
130
127
|
rvm_apt_get_binary=`which apt-get 2> /dev/null`
|
@@ -136,7 +133,7 @@ if [ "$system" = "Linux" ] ; then
|
|
136
133
|
echo -e "\033[0;33m <w> \033[0mFor jRuby (if you wish to use it) you will need:"
|
137
134
|
echo -e "\033[0;32m <i> \033[0msudo apt-get install sun-java6-bin sun-java6-jre sun-java6-jdk"
|
138
135
|
echo -e "\033[0;33m <w> \033[0mFor ree (if you wish to use it) you will need:"
|
139
|
-
echo -e "\033[0;32m <i> \033[0msudo apt-get install libreadline5-dev libssl-dev "
|
136
|
+
echo -e "\033[0;32m <i> \033[0msudo apt-get install libreadline5-dev libssl-dev bison"
|
140
137
|
|
141
138
|
elif [ ! -z "$rvm_emerge_binary" ] ; then
|
142
139
|
echo -e "\033[0;33m <w> \033[0mFor jRuby (if you wish to use it) you will need:"
|
data/scripts/rvm-utility
CHANGED
@@ -52,11 +52,11 @@ function __rvm_debug {
|
|
52
52
|
function __rvm_log {
|
53
53
|
|
54
54
|
case "$1" in
|
55
|
-
debug) shift ; echo -e "\
|
56
|
-
info) shift ; echo -e "\
|
57
|
-
warn) shift ; echo -e "\
|
58
|
-
error) shift ; echo -e "\
|
59
|
-
fail) shift ; echo -e "\
|
55
|
+
debug) shift ; echo -e "\033[0;35m <d> \033[0m $*" ;;
|
56
|
+
info) shift ; echo -e "\033[0;32m <i> \033[0m $*" ;;
|
57
|
+
warn) shift ; echo -e "\033[0;33m <w> \033[0m $*" ;;
|
58
|
+
error) shift ; echo -e "\033[0;31m <e> \033[0m $*" ;;
|
59
|
+
fail) shift ; echo -e "\033[0;31m <e> \033[0m $*" ; popd 2> /dev/null ; return 1 ;;
|
60
60
|
*) echo -e "$*"
|
61
61
|
esac
|
62
62
|
}
|
@@ -78,7 +78,7 @@ function __rvm_run {
|
|
78
78
|
command="$*"
|
79
79
|
rvm_ruby_log_path=${rvm_ruby_log_path:-$rvm_path/log}
|
80
80
|
mkdir -p $rvm_ruby_log_path
|
81
|
-
if [ $
|
81
|
+
if [ ! -z "$rvm_debug_flag" ] ; then __rvm_log "debug" "Executing: $command" ; fi
|
82
82
|
touch $rvm_ruby_log_path/$log_file_name.log $rvm_ruby_log_path/$log_file_name.error.log # for zsh :(
|
83
83
|
echo "[$(date +'%Y-%m-%d %H:%M:%S')] $command" | tee $rvm_ruby_log_path/$log_file_name.log > $rvm_ruby_log_path/$log_file_name.error.log
|
84
84
|
if [ -z "$rvm_niceness" -o "$rvm_niceness" = "0" ] ; then
|
@@ -91,7 +91,7 @@ function __rvm_run {
|
|
91
91
|
}
|
92
92
|
|
93
93
|
function __rvm_cleanup-variables {
|
94
|
-
unset rvm_selected rvm_action rvm_ruby_interpreter rvm_ruby_patch_level rvm_ruby_version rvm_irbrc_file rvm_ruby_irbrc rvm_source_path rvm_path
|
94
|
+
unset rvm_selected rvm_action rvm_ruby_interpreter rvm_ruby_patch_level rvm_ruby_version rvm_irbrc_file rvm_ruby_irbrc rvm_source_path rvm_path rvm_prefix_path rvm_ruby_package_name rvm_gem_path rvm_command rvm_error_message rvm_ruby_home rvm_ruby_binary rvm_gem_set_name rvm_ruby_tag rvm_ruby_rev rvm_url rvm_ruby_make rvm_ruby_configure rvm_ruby_make_install rvm_config_path rvm_ruby_string rvm_bin_path rvm_force_flag rvm_all_flag rvm_reconfigure_flag rvm_make_flags rvm_bin_flag rvm_load_flag rvm_dump_flag rvm_self_flag rvm_gem_flag rvm_rubygems_flag rvm_debug_flag rvm_delete_flag rvm_summary_flag rvm_test_flag _rvm_spec_flag rvm_install_on_use
|
95
95
|
}
|
96
96
|
|
97
97
|
# TODO: root user loadng of /etc/rvmrc
|
@@ -133,16 +133,16 @@ function __rvm_fetch {
|
|
133
133
|
|
134
134
|
pushd $rvm_archives_path > /dev/null
|
135
135
|
eval $rvm_fetch "$1"
|
136
|
-
|
137
|
-
if [ $
|
138
|
-
if [ $
|
136
|
+
result=$?
|
137
|
+
if [ $result -gt 0 ] ; then
|
138
|
+
if [ $result -eq 78 ] ; then
|
139
139
|
__rvm_log "error" "The requested url does not exist: '$1'"
|
140
140
|
else
|
141
141
|
__rvm_log "error" "There was an error, please check $rvm_ruby_log_path/*.error.log"
|
142
142
|
fi
|
143
143
|
fi
|
144
144
|
popd 2> /dev/null
|
145
|
-
return $
|
145
|
+
return $result
|
146
146
|
}
|
147
147
|
|
148
148
|
function __rvm_load-defaults {
|
@@ -204,7 +204,7 @@ function __rvm_reset {
|
|
204
204
|
for variable in RUBY_VERSION GEM_HOME MY_RUBY_HOME ; do unset $variable ; done
|
205
205
|
|
206
206
|
for file in system default ; do
|
207
|
-
if [ -f $rvm_path/$file ] ; then rm -f $rvm_path
|
207
|
+
if [ -f $rvm_path/$file ] ; then rm -f $rvm_path/$file ; fi
|
208
208
|
done
|
209
209
|
__rvm_select "system"
|
210
210
|
|
@@ -326,7 +326,7 @@ function __rvm_symlinks {
|
|
326
326
|
|
327
327
|
function __rvm_list {
|
328
328
|
|
329
|
-
if [ "$
|
329
|
+
if [ "$rvm_all_flag" ] ; then
|
330
330
|
svn list http://svn.ruby-lang.org/repos/ruby/tags/ | grep 'v1_[8|9]' | sed 's/^v1_//' | sed 's/\/$//' | awk -F'_' '{print "1."$1"."$2 " -l "$3}' | sed 's/p$//'
|
331
331
|
|
332
332
|
echo "jruby 1.2.0"
|
@@ -407,10 +407,10 @@ function __rvm_initialize {
|
|
407
407
|
if [ $? -ne 0 ] ; then
|
408
408
|
__rvm_log "fail" "rvm expects either curl or wget, neither seem to be in your path :("
|
409
409
|
else
|
410
|
-
rvm_fetch="wget -
|
410
|
+
rvm_fetch="wget -c " # -q for quiet
|
411
411
|
fi
|
412
412
|
else
|
413
|
-
rvm_fetch="$rvm_fetch -O -L
|
413
|
+
rvm_fetch="$rvm_fetch -O -L --create-dirs -C - " # -s for silent
|
414
414
|
fi
|
415
415
|
|
416
416
|
# TODO: Sanitize user input, ensure that there is a / a the end...
|
@@ -435,8 +435,6 @@ function __rvm_initialize {
|
|
435
435
|
rvm_ruby_repo_url="${rvm_ruby_repo_url:-"http://svn.ruby-lang.org/repos/ruby"}"
|
436
436
|
# Rubinius sha1's will be available after RC1.
|
437
437
|
rvm_rubinius_repo_url="${rvm_rubinius_repo_url:-"git://github.com/evanphx/rubinius.git"}"
|
438
|
-
#rvm_macruby_repo_url="${rvm_macruby_repo_url:-"http://svn.macosforge.org/repository/ruby/MacRuby"}"
|
439
|
-
rvm_macruby_repo_url="${rvm_macruby_repo_url:-"git://github.com/masterkain/macruby.git"}"
|
440
438
|
rvm_jruby_repo_url="${rvm_jruby_repo_url:-"git://kenai.com/jruby~main"}"
|
441
439
|
rvm_ruby_load_path="."
|
442
440
|
rvm_ruby_require=""
|
@@ -447,17 +445,18 @@ function __rvm_initialize {
|
|
447
445
|
PATH=$rvm_bin_path:$PATH ; export PATH
|
448
446
|
fi
|
449
447
|
|
450
|
-
mkdir -p $rvm_source_path $rvm_bin_path $rvm_archives_path
|
448
|
+
mkdir -p $rvm_source_path $rvm_bin_path $rvm_archives_path $rvm_path/tmp
|
451
449
|
}
|
452
450
|
|
453
451
|
function __rvm_update {
|
454
|
-
if [ "$rvm_ruby_rev" = "head" -o "$rvm_update_flag" ] ; then
|
452
|
+
if [ "$rvm_ruby_rev" = "head" -o ! -z "$rvm_self_flag" -o ! -z "$rvm_update_flag" ] ; then
|
455
453
|
__rvm_version
|
456
454
|
__rvm_update_rvm
|
457
455
|
__rvm_version
|
458
456
|
fi
|
459
457
|
__rvm_reload
|
460
458
|
__rvm_select
|
459
|
+
# if [ "$rvm_gem_flag" ] ; then __rvm_gem_scripts ; fi
|
461
460
|
if [ "$rvm_bin_flag" ] ; then __rvm_bin_scripts ; fi
|
462
461
|
if [ "$rvm_rubygems_flag" ] ; then __rvm_rubygems_setup ; fi
|
463
462
|
}
|
@@ -512,12 +511,39 @@ function __rvm_reload {
|
|
512
511
|
source $rvm_path/scripts/rvm
|
513
512
|
}
|
514
513
|
|
514
|
+
function __rvm_ruby_do {
|
515
|
+
__rvm_select
|
516
|
+
__rvm_use
|
517
|
+
binary=`echo $rvm_action | sed 's/do$//'`
|
518
|
+
if [ -x $rvm_ruby_home/bin/$binary ] ; then
|
519
|
+
load_path="$rvm_ruby_home/bin:$rvm_ruby_load_path"
|
520
|
+
if [ "$binary" = "ruby" ] ; then
|
521
|
+
rvm_command="$rvm_ruby_home/bin/$binary $rvm_ruby_require -I$load_path -S $rvm_ruby_args"
|
522
|
+
else
|
523
|
+
rvm_command="$rvm_ruby_home/bin/$binary $rvm_ruby_args"
|
524
|
+
fi
|
525
|
+
echo -e "\n$rvm_ruby_string: $($rvm_ruby_home/bin/$binary -v)"
|
526
|
+
eval $rvm_command
|
527
|
+
result=$?
|
528
|
+
if [ $result -eq 0 ]; then
|
529
|
+
eval "successes=(${successes[*]} $rvm_ruby_string)"
|
530
|
+
else
|
531
|
+
eval "errors=(${errors[*]} $rvm_ruby_string)"
|
532
|
+
fi
|
533
|
+
eval "all=(${all[*]} $rvm_ruby_string)"
|
534
|
+
eval "results=(${results[*]} $result)"
|
535
|
+
# TODO: keep track of and re-set the previous selected ruby ;)
|
536
|
+
else
|
537
|
+
__rvm_log "warn" "'$rvm_ruby_home/bin/$binary' either does not exist or is not executable? :("
|
538
|
+
fi
|
539
|
+
unset rvm_ruby_interpreter rvm_ruby_version rvm_ruby_repo_url rvm_ruby_package_name rvm_ruby_patch_level rvm_ruby_configure rvm_ruby_make rvm_ruby_make_install rvm_ruby_rev rvm_ruby_tag rvm_major_version rvm_minor_version rvm_gem_set_name rvm_gem_home rvm_ruby_binary rvm_ruby_package_name rvm_ruby_home rvm_ruby_log_path rvm_ruby_src_path rvm_ruby_irbrc rvm_selected
|
540
|
+
}
|
541
|
+
|
515
542
|
function __rvm_do {
|
516
|
-
all=() ; successes=() ; errors=() ;
|
543
|
+
all=() ; successes=() ; errors=() ; results=()
|
517
544
|
# TODO: Extract the common functionality out of the if below
|
518
545
|
if [ ! -z "$rvm_ruby_version" ] ; then
|
519
|
-
|
520
|
-
for rvm_ruby_selector in $rvm_ruby_selectors ; do
|
546
|
+
for rvm_ruby_selector in `echo $rvm_ruby_version | tr ',' ' '` ; do
|
521
547
|
temp=$(echo $rvm_ruby_selector | awk '{print substr($1, 0, 1)}')
|
522
548
|
if [ ! -z "$(echo $temp | grep '[0-9]')" ] ; then
|
523
549
|
rvm_ruby_interpreter="ruby"
|
@@ -527,118 +553,49 @@ function __rvm_do {
|
|
527
553
|
unset rvm_ruby_version
|
528
554
|
fi
|
529
555
|
unset temp
|
530
|
-
|
531
|
-
__rvm_use
|
532
|
-
#__rvm_
|
533
|
-
binary=`echo $rvm_action | sed 's/do$//'`
|
534
|
-
lp="$rvm_ruby_home/bin:$rvm_ruby_load_path"
|
535
|
-
if [ "$binary" = "ruby" ] ; then
|
536
|
-
rvm_command="$rvm_ruby_home/bin/$binary $rvm_ruby_require -I$lp -S $rvm_ruby_args"
|
537
|
-
else
|
538
|
-
rvm_command="$rvm_ruby_home/bin/$binary $rvm_ruby_args"
|
539
|
-
fi
|
540
|
-
echo "$rvm_ruby_string: $($rvm_ruby_home/bin/$binary -v)"
|
541
|
-
eval $rvm_command
|
542
|
-
status=$?
|
543
|
-
if [ $status -eq 0 ]; then
|
544
|
-
successes[${#successes[*]}]=$rvm_ruby_string
|
545
|
-
else
|
546
|
-
errors[${#errors[*]}]=$rvm_ruby_string
|
547
|
-
fi
|
548
|
-
all[${#all[*]}]=$rvm_ruby_string
|
549
|
-
statuses[${#statuses[*]}]=$status
|
550
|
-
# TODO: keep track of and re-set the previous selected ruby ;)
|
551
|
-
unset rvm_ruby_interpreter rvm_ruby_patch_level rvm_ruby_version rvm_ruby_package_name rvm_ruby_home rvm_ruby_irbrc rvm_ruby_binary rvm_ruby_string lp
|
556
|
+
__rvm_ruby_do
|
552
557
|
done
|
553
558
|
else # all
|
554
|
-
|
555
|
-
|
556
|
-
if [ -x $
|
557
|
-
rvm_ruby_string
|
558
|
-
|
559
|
-
__rvm_use
|
560
|
-
rvm_ruby_string="$(dirname $rvm_ruby_home/bin/$binary | xargs dirname | xargs basename)"
|
561
|
-
lp="$rvm_ruby_home/bin:$rvm_ruby_load_path"
|
562
|
-
if [ "$binary" = "ruby" ] ; then
|
563
|
-
rvm_command="$rvm_ruby_binary $rvm_ruby_require -I$lp -S $rvm_ruby_args"
|
564
|
-
else
|
565
|
-
rvm_command="$rvm_ruby_binary $rvm_ruby_args"
|
566
|
-
fi
|
567
|
-
echo "$(basename $rvm_ruby_binary):"
|
568
|
-
eval $rvm_command
|
569
|
-
status=$?
|
570
|
-
if [ $status -eq 0 ]; then
|
571
|
-
successes[${#successes[*]}]=$rvm_ruby_string
|
572
|
-
else
|
573
|
-
errors[${#errors[*]}]=$rvm_ruby_string
|
574
|
-
fi
|
575
|
-
all[${#all[*]}]=$rvm_ruby_string
|
576
|
-
statuses[${#statuses[*]}]=$status
|
577
|
-
unset rvm_ruby_interpreter rvm_ruby_patch_level rvm_ruby_version rvm_ruby_package_name rvm_ruby_home rvm_ruby_irbrc rvm_ruby_binary rvm_ruby_string lp
|
559
|
+
while read bin_line
|
560
|
+
do # Keep this on second line damnit!
|
561
|
+
if [ -x $bin_line ] ; then
|
562
|
+
rvm_ruby_string="`dirname $bin_line | xargs dirname | xargs basename`"
|
563
|
+
__rvm_ruby_do
|
578
564
|
fi
|
579
|
-
done
|
565
|
+
done < <(/bin/ls $rvm_path/*/bin/ruby 2> /dev/null)
|
580
566
|
fi
|
581
567
|
|
582
|
-
|
583
|
-
|
584
|
-
|
585
|
-
echo -e "\
|
586
|
-
echo -e "\
|
568
|
+
if [ ! -z "$rvm_summary_flag" ] ; then
|
569
|
+
export successes errors results
|
570
|
+
echo -e "\nSummary:"
|
571
|
+
echo -e "\033[0;32msuccessful (${#successes[*]}) : [ $(echo "${successes[*]}" | sed 's/ /, /g') ]\033[0m"
|
572
|
+
echo -e "\033[0;31merrors (${#errors[*]}) : [ $(echo "${errors[*]}" | sed 's/ /, /g') ]\033[0m"
|
587
573
|
echo -e "all (${#all[*]}) : [ $(echo "${all[*]}" | sed 's/ /, /g') ]"
|
588
|
-
echo -e "exit
|
589
|
-
# unset binary successes errors rvm_summary
|
574
|
+
echo -e "exit results: [ $(echo "${results[*]}" | sed 's/ /, /g') ]\n"
|
590
575
|
else
|
591
|
-
unset
|
576
|
+
unset bin_line rvm_summary_flag
|
577
|
+
# successes errors
|
592
578
|
fi
|
593
579
|
return ${#errors[*]}
|
594
580
|
}
|
595
581
|
|
596
|
-
function __rvm_irbrc {
|
597
|
-
if [ ! -s "$rvm_ruby_irbrc" ] ; then
|
598
|
-
rvm_irbrc_file=`cat <<-Config
|
599
|
-
load '$HOME/.irbrc' if File.exists?('$HOME/.irbrc') rescue nil
|
600
|
-
|
601
|
-
require "irb/completion" rescue nil
|
602
|
-
|
603
|
-
@prompt = {
|
604
|
-
:PROMPT_I => "${rvm_ruby_package_name} > ", # default prompt
|
605
|
-
:PROMPT_S => "${rvm_ruby_package_name}%l> ", # known continuation
|
606
|
-
:PROMPT_C => "${rvm_ruby_package_name} > ",
|
607
|
-
:PROMPT_N => "${rvm_ruby_package_name} ?> ", # unknown continuation
|
608
|
-
:RETURN => " => %s \n",
|
609
|
-
:AUTO_INDENT => true
|
610
|
-
}
|
611
|
-
@prompt_mode = :DEFAULT
|
612
|
-
IRB.conf[:PROMPT][@prompt_mode] = @prompt
|
613
|
-
IRB.conf[:PROMPT_MODE] = @prompt_mode
|
614
|
-
Config
|
615
|
-
`
|
616
|
-
touch $rvm_ruby_home/.irbrc
|
617
|
-
echo -e "\n$rvm_irbrc_file" > $rvm_ruby_home/.irbrc
|
618
|
-
fi
|
619
|
-
|
620
|
-
}
|
621
|
-
|
622
582
|
function __rvm_ruby_string {
|
623
583
|
if [ "$rvm_ruby_interpreter" = "system" ] ; then
|
624
|
-
rvm_ruby_string=""
|
584
|
+
rvm_ruby_string="system"
|
625
585
|
elif [ ! -z "$rvm_ruby_string" ] ; then
|
626
|
-
echo $rvm_ruby_string |
|
627
|
-
|
628
|
-
|
629
|
-
|
630
|
-
|
631
|
-
fi
|
632
|
-
rvm_ruby_vesion=`echo $rvm_ruby_string | awk -F'-' '{print $(NF-1)}'`
|
633
|
-
revision=`echo $rvm_ruby_string | awk '{print $NF}'`
|
586
|
+
rvm_ruby_string=`echo "$rvm_ruby_string" | sed 's/ruby-enterprise/ree/g'` # dash-antics :)
|
587
|
+
rvm_ruby_interpreter=`echo $rvm_ruby_string | tr '-' ' ' | awk '{print $1}'`
|
588
|
+
rvm_ruby_version=`echo $rvm_ruby_string | awk -F'-' '{print $2}'`
|
589
|
+
revision=`echo $rvm_ruby_string | awk -F'-' '{print $3}'`
|
590
|
+
|
634
591
|
if [ "$revision" = "head" -o "$revision" = "preview" ] ; then
|
635
592
|
rvm_ruby_revision="$revision"
|
636
593
|
else
|
637
|
-
echo $revision | grep 'p[0-9]\+' > /dev/null
|
594
|
+
echo $revision | grep '^p[0-9]\+' > /dev/null
|
638
595
|
if [ $? -eq 0 ] ; then
|
639
596
|
rvm_ruby_patch_level=`echo $revision | awk -F'p' '{print $2}'`
|
640
597
|
else
|
641
|
-
echo $revision | grep '[0-9]\+' > /dev/null
|
598
|
+
echo $revision | grep '^[0-9]\+' > /dev/null
|
642
599
|
if [ $? -eq 0 ] ; then
|
643
600
|
rvm_ruby_rev="$revision"
|
644
601
|
else
|
@@ -646,6 +603,8 @@ function __rvm_ruby_string {
|
|
646
603
|
fi
|
647
604
|
fi
|
648
605
|
fi
|
606
|
+
|
607
|
+
if [ "rvm_ruby_interpreter" = "ree" ] ; then rvm_ruby_interpreter="ruby-enterprise" ; fi
|
649
608
|
fi
|
650
609
|
return 0
|
651
610
|
}
|
@@ -662,7 +621,7 @@ function __rvm_gemset_dump {
|
|
662
621
|
gems="`gem list | sed 's/[\(|\)]//g' | sed 's/, /,/g' | tr ' ' ';'`"
|
663
622
|
for gem in $gems ; do
|
664
623
|
name=`echo $gem | awk -F';' '{print $1}'`
|
665
|
-
if [ -z "$
|
624
|
+
if [ -z "$rvm_latest_flag" ] ; then
|
666
625
|
versions=`echo $gem | awk -F';' '{print $2}' | sed 's/,/ /g'`
|
667
626
|
for version in $versions ; do
|
668
627
|
echo "$name -v$version" >> $file_name.gemset
|
@@ -678,38 +637,86 @@ function __rvm_gemset_dump {
|
|
678
637
|
|
679
638
|
function __rvm_gemset_load {
|
680
639
|
echo "Loading $rvm_load_file file..."
|
681
|
-
|
640
|
+
rvm_ruby_gem_list=`/bin/ls $rvm_gem_home/specifications/ | sed 's/\.gemspec$//' 2> /dev/null`
|
641
|
+
while read line
|
642
|
+
do # Keep this on 2nd line :( bash fail.
|
682
643
|
# TODO: Switch to a different field separator than ; to allow for evals
|
683
644
|
gem=`echo $line | awk -F';' '{print $1}'`
|
684
645
|
gem_prefix=`echo $line | awk -F';' '{print $2}'`
|
685
646
|
gem_name=`echo $gem | awk '{print $1}'`
|
686
647
|
gem_version=`echo $gem | sed 's/^.*-v[=]*[ ]*//' | awk '{print $1}'`
|
687
648
|
gem_postfix=`echo $gem | sed "s/$gem_name//" | sed "s/-v[=]*[ ]*$gem_version//"`
|
688
|
-
gem_file="$gem_name-$gem_version.gem"
|
689
649
|
|
690
650
|
if [ -z "$gem_version" ] ; then # no version
|
691
|
-
|
651
|
+
gem_file_name="${gem_name}*.gem"
|
692
652
|
else # version
|
693
|
-
|
653
|
+
gem_file_name="$gem_name-$gem_version.gem"
|
694
654
|
fi
|
695
|
-
|
696
|
-
if [ -z "$
|
697
|
-
|
655
|
+
cache_file=`/bin/ls -t $rvm_gem_path/*/*/cache/${gem_file_name}* | head -n1 2> /dev/null`
|
656
|
+
if [ -z "$cache_file" ] ; then
|
657
|
+
if [ -z "$gem_version" ] ; then
|
658
|
+
gem="$gem_name"
|
659
|
+
else
|
660
|
+
gem="$gem_name -v $gem_version"
|
661
|
+
fi
|
698
662
|
else # cached
|
699
|
-
|
663
|
+
gem_file_name=`basename $cache_file`
|
664
|
+
gem_string=`echo "$gem_file_name" | sed 's/\.gem$//'`
|
665
|
+
if [ ! -z "`echo "$rvm_ruby_gem_list" | awk "/$gem_string/{print}"`" ] ; then
|
666
|
+
if [ ! -z "$rvm_force_flag" ] ; then
|
667
|
+
cp $cache_file $rvm_path/tmp/$gem_file_name
|
668
|
+
gem="$rvm_path/tmp/$gem_file_name" # install as a named local gem
|
669
|
+
else
|
670
|
+
unset gem
|
671
|
+
__rvm_log "info" "$gem_name $gem_version is already installed, skipping. (use --force to force these to install regardless)"
|
672
|
+
fi
|
673
|
+
else
|
674
|
+
gem="$cache_file"
|
675
|
+
fi
|
700
676
|
fi
|
701
677
|
|
702
|
-
|
703
|
-
|
704
|
-
|
705
|
-
|
706
|
-
|
678
|
+
if [ ! -z "$gem" ] ; then
|
679
|
+
# TODO: Set vars if fourth field is non-empty (means that there are conditional statements to execute in the gem install line.
|
680
|
+
if [ -z "$vars" ] ; then
|
681
|
+
GEM_HOME="$rvm_gem_home" GEM_PATH="$rvm_gem_home" $gem_prefix $rvm_ruby_home/bin/gem install --no-rdoc --no-ri -q $gem $gem_postfix
|
682
|
+
else
|
683
|
+
eval "GEM_HOME='$rvm_gem_home' GEM_PATH='$rvm_gem_home' $gem_prefix $rvm_ruby_home/bin/gem install --no-rdoc --no-ri -q $gem $gem_postfix"
|
684
|
+
fi
|
707
685
|
fi
|
708
|
-
unset gem gem_prefix gem_name gem_version
|
709
|
-
done
|
686
|
+
unset gem gem_prefix gem_name gem_version gem_file_name gem_postfix cache_file gem_file_name gem_string
|
687
|
+
done < <(awk '/^[a-zA-Z]/{print}' "$rvm_load_file")
|
688
|
+
}
|
689
|
+
|
690
|
+
function __rvm_irbrc {
|
691
|
+
if [ -d $rvm_ruby_home -a ! -s $rvm_ruby_irbrc ] ; then
|
692
|
+
rvm_irbrc_file=`cat <<-Config
|
693
|
+
load '$HOME/.irbrc' if File.exists?('$HOME/.irbrc') rescue nil
|
694
|
+
|
695
|
+
require "irb/completion" rescue nil
|
696
|
+
|
697
|
+
@prompt = {
|
698
|
+
:PROMPT_I => "${rvm_ruby_package_name} > ", # default prompt
|
699
|
+
:PROMPT_S => "${rvm_ruby_package_name}%l> ", # known continuation
|
700
|
+
:PROMPT_C => "${rvm_ruby_package_name} > ",
|
701
|
+
:PROMPT_N => "${rvm_ruby_package_name} ?> ", # unknown continuation
|
702
|
+
:RETURN => " => %s \n",
|
703
|
+
:AUTO_INDENT => true
|
704
|
+
}
|
705
|
+
@prompt_mode = :DEFAULT
|
706
|
+
IRB.conf[:PROMPT][@prompt_mode] = @prompt
|
707
|
+
IRB.conf[:PROMPT_MODE] = @prompt_mode
|
708
|
+
Config
|
709
|
+
`
|
710
|
+
touch $rvm_ruby_irbrc
|
711
|
+
echo -e "\n$rvm_irbrc_file" > $rvm_ruby_home/.irbrc
|
712
|
+
fi
|
713
|
+
|
710
714
|
}
|
711
715
|
|
712
|
-
|
716
|
+
|
717
|
+
#
|
718
|
+
# ruby supporting libraries:
|
719
|
+
#
|
713
720
|
function __rvm_readline_install {
|
714
721
|
pushd $rvm_path/src > /dev/null
|
715
722
|
package=readline
|
@@ -732,7 +739,6 @@ function __rvm_readline_install {
|
|
732
739
|
popd > /dev/null
|
733
740
|
}
|
734
741
|
|
735
|
-
# -C --with-iconv-dir=$rvm_path/usr
|
736
742
|
function __rvm_iconv_install {
|
737
743
|
pushd $rvm_path/src > /dev/null
|
738
744
|
package=libiconv
|
@@ -746,3 +752,4 @@ function __rvm_iconv_install {
|
|
746
752
|
|
747
753
|
popd > /dev/null
|
748
754
|
}
|
755
|
+
|