rvm 0.1.18 → 0.1.19
Sign up to get free protection for your applications and to get access to all the features.
- data/binscripts/rvm +14 -3
- data/config/db +1 -1
- data/config/md5 +4 -0
- data/examples/rvmrc +10 -10
- data/install +16 -9
- data/lib/VERSION.yml +1 -1
- data/rvm.gemspec +6 -5
- data/scripts/cli +82 -72
- data/scripts/{gems → gemsets} +33 -33
- data/scripts/initialize +4 -2
- data/scripts/install +16 -9
- data/scripts/manage +10 -5
- data/scripts/{libraries → package} +48 -26
- data/scripts/rvm +13 -6
- data/scripts/rvm-install +16 -9
- data/scripts/selector +10 -10
- data/scripts/set +179 -0
- data/scripts/update +16 -9
- data/scripts/utility +45 -205
- metadata +15 -7
data/scripts/rvm
CHANGED
@@ -12,15 +12,23 @@ if [[ "$rvm_loaded_flag" != "1" ]] || [[ "$rvm_reload_flag" = "1" ]] ; then
|
|
12
12
|
if [[ -f /etc/rvmrc ]] ; then source /etc/rvmrc ; fi
|
13
13
|
if [[ -f "$HOME/.rvmrc" ]] ; then source "$HOME/.rvmrc" ; fi
|
14
14
|
|
15
|
+
if [[ -z "$rvm_prefix" ]] ; then
|
16
|
+
if [[ "root" = "$(whoami)" ]] ; then
|
17
|
+
rvm_prefix="/usr/local"
|
18
|
+
else
|
19
|
+
rvm_prefix="$HOME"
|
20
|
+
fi
|
21
|
+
fi
|
22
|
+
|
15
23
|
if [[ -z "$rvm_path" ]] ; then
|
16
24
|
unset rvm_path
|
17
25
|
if [[ "root" = "$(whoami)" ]] ; then
|
18
|
-
rvm_path="/
|
26
|
+
rvm_path="$rvm_prefix/rvm"
|
19
27
|
else
|
20
28
|
if [[ -d "$HOME/.rvm" ]] && [[ -s "$HOME/.rvm/scripts/rvm" ]]; then
|
21
29
|
rvm_path="$HOME/.rvm"
|
22
|
-
elif [[ -d "/
|
23
|
-
rvm_path="/
|
30
|
+
elif [[ -d "$rvm_prefix/rvm" ]] && [[ -s "$rvm_prefix/rvm/scripts/rvm" ]] ; then
|
31
|
+
rvm_path="$rvm_prefix/rvm"
|
24
32
|
else
|
25
33
|
rvm_path="$HOME/.rvm"
|
26
34
|
fi
|
@@ -48,7 +56,6 @@ if [[ "$rvm_loaded_flag" != "1" ]] || [[ "$rvm_reload_flag" = "1" ]] ; then
|
|
48
56
|
source $rvm_scripts_path/version
|
49
57
|
source $rvm_scripts_path/selector
|
50
58
|
source $rvm_scripts_path/cli
|
51
|
-
source $rvm_scripts_path/libraries
|
52
59
|
source $rvm_scripts_path/cd
|
53
60
|
|
54
61
|
rvm_loaded_flag=1
|
@@ -61,8 +68,8 @@ if [[ "$rvm_loaded_flag" != "1" ]] || [[ "$rvm_reload_flag" = "1" ]] ; then
|
|
61
68
|
source "$HOME/.rvm/default"
|
62
69
|
elif [[ -s "$rvm_config_path/default" ]] ; then
|
63
70
|
source "$rvm_config_path/default"
|
64
|
-
elif [[ -s "/
|
65
|
-
source "/
|
71
|
+
elif [[ -s "$rvm_prefix/rvm/config/default" ]] ; then
|
72
|
+
source "$rvm_prefix/rvm/config/default"
|
66
73
|
fi
|
67
74
|
else
|
68
75
|
echo -e "\$rvm_path is not set. rvm cannot load."
|
data/scripts/rvm-install
CHANGED
@@ -35,17 +35,17 @@ while [[ $# -gt 0 ]] ; do
|
|
35
35
|
esac
|
36
36
|
done
|
37
37
|
|
38
|
-
|
39
|
-
|
40
|
-
if [[ -z "$rvm_path" ]] ; then
|
41
|
-
unset rvm_path
|
38
|
+
if [[ -z "$rvm_prefix" ]] ; then
|
39
|
+
__rvm_load_rvmrc
|
42
40
|
if [[ "root" = "$(whoami)" ]] ; then
|
43
|
-
|
41
|
+
rvm_prefix="/usr/local/"
|
44
42
|
else
|
45
|
-
|
43
|
+
rvm_prefix="$HOME/."
|
46
44
|
fi
|
47
45
|
fi
|
48
46
|
|
47
|
+
if [[ -z "$rvm_path" ]] ; then rvm_path="${rvm_prefix}rvm" ; fi
|
48
|
+
|
49
49
|
source scripts/initialize
|
50
50
|
__rvm_initialize
|
51
51
|
|
@@ -69,7 +69,7 @@ rvm_scripts_path="${rvm_scripts_path:-"$rvm_path/scripts"}"
|
|
69
69
|
rvm_config_path="${rvm_config_path:-"$rvm_path/config"}"
|
70
70
|
rvm_hooks_path="${rvm_hooks_path:-"$rvm_path/hooks"}"
|
71
71
|
rvm_tmp_path="${rvm_tmp_path:-"$rvm_path/tmp"}"
|
72
|
-
rvm_symlink_path="${rvm_symlink_path
|
72
|
+
rvm_symlink_path="${rvm_symlink_path:-$rvm_prefix/bin}"
|
73
73
|
|
74
74
|
mkdir -p $rvm_archives_path $rvm_src_path $rvm_log_path $rvm_bin_path $rvm_gems_path $rvm_rubies_path $rvm_config_path $rvm_hooks_path $rvm_tmp_path $rvm_symlink_path $HOME/.gem/cache
|
75
75
|
|
@@ -92,6 +92,11 @@ if [[ ! -s "$rvm_config_path/user" ]] ; then
|
|
92
92
|
echo '# Users settings file, overrides db file settings and persists across installs.' >> $rvm_config_path/user
|
93
93
|
fi
|
94
94
|
|
95
|
+
scripts="monitor match log install color db fetch log set libraries"
|
96
|
+
for script_name in $(echo $scripts) ; do
|
97
|
+
chmod +x $rvm_scripts_path/$script_name
|
98
|
+
done
|
99
|
+
|
95
100
|
#
|
96
101
|
# Bin Scripts
|
97
102
|
#
|
@@ -167,6 +172,7 @@ echo -e "\nThank you for using rvm. I hope that it makes your work easier and mo
|
|
167
172
|
echo -e "If you have any questions, issues and/or ideas for improvement please hop in #rvm on irc.freenode.net and let me know."
|
168
173
|
echo -e "My irc nickname is 'wayneeseguin' and I hang out from ~09:00-17:00EST and again from ~21:00EST-~00:00EST."
|
169
174
|
echo -e "If I do not respond right away, please hang around after asking your question, I will respond as soon as I am back."
|
175
|
+
echo -e "Be sure to get head often as rvm development happens fast, you can do this by typing 'rvm update --head'."
|
170
176
|
echo -e "\n w$(tput setaf 2)⦿‿⦿$(tput sgr0)t!"
|
171
177
|
echo -e "\n ~ Wayne"
|
172
178
|
echo -e "\n********************************************************************************"
|
@@ -176,13 +182,14 @@ if [[ "root" != "$(whoami)" ]] ; then
|
|
176
182
|
echo -e "\n1) Place the folowing line at the end of your shell's loading files(.bashrc and then .bash_profile for bash and .zshrc for zsh), after all path/variable settings:"
|
177
183
|
echo -e "\n if [[ -s $rvm_path/scripts/rvm ]] ; then source $rvm_path/scripts/rvm ; fi"
|
178
184
|
echo -e "\n2) Ensure that there is no 'return' from inside the .bashrc file. (otherwise rvm will be prevented from working properly)."
|
179
|
-
echo -e "\n This means that if you see '[ -z "$PS1" ] && return' then you must split your .bashrc"
|
185
|
+
echo -e "\n This means that if you see '[ -z "$PS1" ] && return' then you must remove it and split your .bashrc"
|
180
186
|
echo -e "\n Put everything *except the return code line(s)* into your .bash_profile, and everything above that code in your .bashrc."
|
187
|
+
echo -e "\n Be *sure* to REMOVE the '&& return' statement line."
|
181
188
|
echo -e "\n If you wish to DRY up your config you can 'source ~/.bashrc' at the top of your .bash_profile."
|
182
189
|
echo -e "\n4) Then $(tput setaf 1)CLOSE THIS SHELL$(tput sgr0) and open a new one in order to use rvm.\n"
|
183
190
|
fi
|
184
191
|
|
185
|
-
if grep '&& return'
|
192
|
+
if [[ -s $HOME/.bashrc ]] && grep '&& return' $HOME/.bashrc ; then
|
186
193
|
echo -e "\n\nWARNING: you have a 'return' statement in your .bashrc, likely this will cause untold havoc. Please remove it and refactor your profiles to be correct. If you have questions about this please visit #rvm on irc.freenode.net.\n\n"
|
187
194
|
fi
|
188
195
|
|
data/scripts/selector
CHANGED
@@ -186,7 +186,7 @@ __rvm_select() {
|
|
186
186
|
fi
|
187
187
|
esac
|
188
188
|
|
189
|
-
|
189
|
+
__rvm_gemset_select
|
190
190
|
|
191
191
|
if [[ ! -z "$rvm_ruby_interpreter" ]] && [[ "system" != "$rvm_ruby_interpreter" ]] && [[ "default" != "$rvm_ruby_interpreter" ]] ; then
|
192
192
|
if [[ ! -z "$rvm_ruby_version" ]] ; then
|
@@ -207,15 +207,15 @@ __rvm_select() {
|
|
207
207
|
export GEMSTONE_GLOBAL_DIR=$MAGLEV_HOME
|
208
208
|
fi
|
209
209
|
|
210
|
-
if [[ ! -z "$
|
211
|
-
rvm_ruby_gem_home="${rvm_ruby_gem_home}%${
|
210
|
+
if [[ ! -z "$rvm_gemset_name" ]] ; then
|
211
|
+
rvm_ruby_gem_home="${rvm_ruby_gem_home}%${rvm_gemset_name}"
|
212
212
|
fi
|
213
213
|
|
214
214
|
rvm_ruby_selected_flag=1
|
215
215
|
|
216
216
|
mkdir -p $rvm_ruby_log_path
|
217
217
|
|
218
|
-
export rvm_ruby_interpreter rvm_ruby_version rvm_ruby_repo_url rvm_ruby_package_name rvm_url rvm_ruby_patch_level rvm_ruby_configure rvm_ruby_configure_flags rvm_ruby_make rvm_ruby_make_install rvm_ruby_revision rvm_ruby_tag rvm_major_version rvm_minor_version
|
218
|
+
export rvm_ruby_interpreter rvm_ruby_version rvm_ruby_repo_url rvm_ruby_package_name rvm_url rvm_ruby_patch_level rvm_ruby_configure rvm_ruby_configure_flags rvm_ruby_make rvm_ruby_make_install rvm_ruby_revision rvm_ruby_tag rvm_major_version rvm_minor_version rvm_gemset_name rvm_gems_path rvm_ruby_gem_home rvm_path rvm_src_path rvm_bin_path rvm_ruby_binary rvm_ruby_home rvm_log_path rvm_ruby_log_path rvm_src_path rvm_ruby_src_path rvm_ruby_irbrc rvm_ruby_selected_flag rvm_ruby_string
|
219
219
|
else
|
220
220
|
rvm_ruby_interpreter="${rvm_ruby_interpreter:-system}"
|
221
221
|
fi
|
@@ -319,7 +319,7 @@ __rvm_use() {
|
|
319
319
|
|
320
320
|
echo "export PATH=\"$rvm_ruby_home/bin:$rvm_ruby_gem_home/bin:$rvm_ruby_global_gems_path/bin:$rvm_bin_path:\$PATH\"" > $rvm_config_path/default
|
321
321
|
|
322
|
-
for variable in RUBY_VERSION GEM_HOME GEM_PATH BUNDLE_PATH MY_RUBY_HOME IRBRC rvm_ruby_string
|
322
|
+
for variable in RUBY_VERSION GEM_HOME GEM_PATH BUNDLE_PATH MY_RUBY_HOME IRBRC rvm_ruby_string rvm_gemset_name MAGLEV_HOME ; do
|
323
323
|
eval "export $variable"
|
324
324
|
eval value=\$${variable}
|
325
325
|
if [[ ! -z "$value" ]] ; then
|
@@ -340,7 +340,7 @@ __rvm_use() {
|
|
340
340
|
if [[ ! -z "$rvm_rvmrc_flag" ]] ; then __rvm_set_rvmrc ; fi
|
341
341
|
# Export ruby string and gem set name for extrnal scripts to take advantage of them.
|
342
342
|
if [[ ! -z "$rvm_ruby_string" ]] ; then export rvm_ruby_string ; fi
|
343
|
-
if [[ ! -z "$
|
343
|
+
if [[ ! -z "$rvm_gemset_name" ]] ; then export rvm_gemset_name ; fi
|
344
344
|
if [[ ! -z "$new_path" ]] ; then export PATH="$new_path" ; unset new_path ; fi
|
345
345
|
|
346
346
|
if [[ "maglev" = "$rvm_ruby_interpreter" ]] ; then
|
@@ -357,7 +357,7 @@ __rvm_use() {
|
|
357
357
|
|
358
358
|
__rvm_ruby_string() {
|
359
359
|
# rvm_ruby_string may designate any of the following items:
|
360
|
-
# *
|
360
|
+
# * rvm_gemset_name
|
361
361
|
# * rvm_ruby_interpreter
|
362
362
|
# * rvm_ruby_version
|
363
363
|
# * rvm_ruby_patch_level
|
@@ -366,7 +366,7 @@ __rvm_ruby_string() {
|
|
366
366
|
# * rvm_ruby_patch
|
367
367
|
|
368
368
|
set_name=$(echo "$rvm_ruby_string" | awk -F'%' '{print $2}')
|
369
|
-
if [[ ! -z "$set_name" ]] ; then
|
369
|
+
if [[ ! -z "$set_name" ]] ; then rvm_gemset_name="$set_name" ; fi
|
370
370
|
ruby_string=$(echo "$rvm_ruby_string" | awk -F'%' '{print $1}')
|
371
371
|
|
372
372
|
__rvm_unset_ruby_variables
|
@@ -378,11 +378,11 @@ __rvm_ruby_string() {
|
|
378
378
|
export rvm_head_flag=1
|
379
379
|
elif [[ "default" = "$string" ]] ; then
|
380
380
|
rvm_ruby_interpreter="default"
|
381
|
-
unset rvm_ruby_patch_level rvm_ruby_tag rvm_head_flag rvm_ruby_revision rvm_ruby_version
|
381
|
+
unset rvm_ruby_patch_level rvm_ruby_tag rvm_head_flag rvm_ruby_revision rvm_ruby_version rvm_gemset_name
|
382
382
|
return
|
383
383
|
elif [[ "system" = "$string" ]] ; then
|
384
384
|
rvm_ruby_interpreter="system"
|
385
|
-
unset rvm_ruby_patch_level rvm_ruby_tag rvm_head_flag rvm_ruby_revision rvm_ruby_version
|
385
|
+
unset rvm_ruby_patch_level rvm_ruby_tag rvm_head_flag rvm_ruby_revision rvm_ruby_version rvm_gemset_name
|
386
386
|
return
|
387
387
|
elif [[ "nightly" = "$string" ]] ; then
|
388
388
|
rvm_ruby_version="nightly"
|
data/scripts/set
ADDED
@@ -0,0 +1,179 @@
|
|
1
|
+
#!/usr/bin/env bash
|
2
|
+
|
3
|
+
source $rvm_scripts_path/initialize
|
4
|
+
source $rvm_scripts_path/utility
|
5
|
+
source $rvm_scripts_path/selector
|
6
|
+
|
7
|
+
if [[ ! -z "$rvm_trace_flag" ]] ; then set -x ; export rvm_trace_flag ; fi
|
8
|
+
|
9
|
+
trap "if [[ -d $rvm_tmp_path/ ]] && [[ -s $rvm_tmp_path/$$ ]] ; then rm -f $rvm_tmp_path/$$ > /dev/null 2>&1 ; fi ; exit" 0 1 2 3 15
|
10
|
+
|
11
|
+
action="$1" ; shift
|
12
|
+
args="$*"
|
13
|
+
if [[ -z "$action" ]] ; then
|
14
|
+
$rvm_scripts_path/log "error" "Action must be specified."
|
15
|
+
exit 1
|
16
|
+
fi
|
17
|
+
|
18
|
+
# Perform an action using one of a selected ruby's specified binaries.
|
19
|
+
__rvm_ruby_do() {
|
20
|
+
__rvm_select
|
21
|
+
__rvm_use
|
22
|
+
|
23
|
+
binary="$(echo $action | sed 's#do$##')"
|
24
|
+
if [[ -x "$rvm_ruby_home/bin/$binary" ]] ; then
|
25
|
+
rm -f "$rvm_path/gems/cache"
|
26
|
+
ln -nfs "$HOME/.gem/cache" "$rvm_path/gems/cache"
|
27
|
+
binary="$rvm_ruby_home/bin/$binary"
|
28
|
+
elif [[ -x "$rvm_ruby_global_gems_path/bin/$binary" ]] ; then
|
29
|
+
binary="$rvm_ruby_global_gems_path/bin/$binary"
|
30
|
+
elif [[ -x "$rvm_ruby_gem_home/bin/$binary" ]] ; then
|
31
|
+
binary="$rvm_ruby_gem_home/bin/$binary"
|
32
|
+
elif [[ "system" = "$rvm_ruby_string" ]] && [[ -x "$(which $binary)" ]] ; then
|
33
|
+
binary="$(basename $(which $binary 2>/dev/null) 2>/dev/null)"
|
34
|
+
else
|
35
|
+
$rvm_scripts_path/log "warn" "'$binary not found for $rvm_ruby_string' either does not exist or is not executable? :("
|
36
|
+
__rvm_unset_ruby_variables
|
37
|
+
return 1
|
38
|
+
fi
|
39
|
+
|
40
|
+
if [[ ! -z "$rvm_ruby_mode" ]] ; then
|
41
|
+
rvm_ruby_string="${rvm_ruby_string}-${rvm_ruby_mode}"
|
42
|
+
rvm_ruby_mode="--$(echo $rvm_ruby_mode | sed 's/^m//')"
|
43
|
+
fi
|
44
|
+
|
45
|
+
load_path="$(dirname $(which $binary 2>/dev/null) 2>/dev/null):$rvm_ruby_load_path"
|
46
|
+
# TODO: the else case below should be run if $args =~ /\.rb$/
|
47
|
+
if [[ "ruby" = "$(basename $binary)" ]] && [[ "$rvm_benchmark_flag" -ne 1 ]] ; then
|
48
|
+
if $rvm_scripts_path/match "$args" "\.rb$" ; then
|
49
|
+
if [[ -z "$prefix" ]] ; then prefix="-S" ; fi
|
50
|
+
if ! $rvm_scripts_path/match "$args" "$prefix" ; then
|
51
|
+
args="$prefix $args"
|
52
|
+
fi
|
53
|
+
fi
|
54
|
+
rvm_command="$binary $rvm_ruby_mode $rvm_ruby_require -I$load_path $args"
|
55
|
+
elif [[ "gem" = "$(basename $binary)" ]] && $rvm_scripts_path/match "$args" '^install' ; then
|
56
|
+
#$rvm_scripts_path/gem install $args
|
57
|
+
rvm_command="$rvm_scripts_path/gemsets $rvm_ruby_mode $args $rvm_gem_options"
|
58
|
+
else
|
59
|
+
rvm_command="$binary $rvm_ruby_mode $args"
|
60
|
+
fi
|
61
|
+
|
62
|
+
if [[ ! -z "$rvm_json_flag" ]] || [[ ! -z "$rvm_yaml_flag" ]] || [[ ! -z "$rvm_summary_flag" ]] ; then
|
63
|
+
mkdir -p ./log/$rvm_ruby_string/
|
64
|
+
touch ./log/$rvm_ruby_string/$action.log ./log/$rvm_ruby_string/$action.error.log
|
65
|
+
eval "$rvm_command" >> ./log/$rvm_ruby_string/$action.log 2>> ./log/$rvm_ruby_string/$action.error.log
|
66
|
+
else
|
67
|
+
$rvm_scripts_path/log "info" "$rvm_ruby_string: $($rvm_ruby_home/bin/ruby -v $rvm_ruby_mode | tr "\n" ' ')"
|
68
|
+
eval "$rvm_command"
|
69
|
+
fi
|
70
|
+
result=$?
|
71
|
+
|
72
|
+
string=$(basename $rvm_ruby_gem_home)
|
73
|
+
if [[ $result -eq 0 ]]; then
|
74
|
+
eval "successes=(${successes[*]} $string)"
|
75
|
+
else
|
76
|
+
eval "errors=(${errors[*]} $string)"
|
77
|
+
fi
|
78
|
+
eval "rubies=(${rubies[*]} $string)"
|
79
|
+
eval "statuses=(${statuses[*]} $result)"
|
80
|
+
unset string
|
81
|
+
__rvm_unset_ruby_variables
|
82
|
+
}
|
83
|
+
|
84
|
+
# Output the summary in a human readable format.
|
85
|
+
__rvm_summary() {
|
86
|
+
export successes errors statuses
|
87
|
+
summary="\nSummary:\n\n"
|
88
|
+
if [[ ${#successes[*]} -gt 0 ]] ; then
|
89
|
+
summary="$summary \033[0;32m${#successes[*]} successful: $(echo "${successes[*]}" | sed 's# #, #g')\033[0m\n"
|
90
|
+
fi
|
91
|
+
if [[ ${#errors[*]} -gt 0 ]] ; then
|
92
|
+
summary="$summary \033[0;31m${#errors[*]} errors: $(echo "${errors[*]}" | sed 's# #, #g')\033[0m\n"
|
93
|
+
fi
|
94
|
+
total=${#rubies[*]}
|
95
|
+
if [[ ! -z "$ZSH_VERSION" ]] ; then array_start=1 ; else array_start=0 ; fi
|
96
|
+
echo -e "$summary" | tee -a log/summary.log
|
97
|
+
return ${#errors[*]}
|
98
|
+
}
|
99
|
+
|
100
|
+
# Output the summary in a yaml format.
|
101
|
+
__rvm_yaml() {
|
102
|
+
export successes errors statuses
|
103
|
+
yaml="totals:\n rubies: ${#rubies[*]}\n successes: ${#successes[*]}\n errors: ${#errors[*]}\nsuccesses:"
|
104
|
+
for var in ${successes[*]} ; do yaml="$yaml\n - $var" ; done
|
105
|
+
yaml="$yaml\nerrors:"
|
106
|
+
for var in ${errors[*]} ; do yaml="$yaml\n - $var" ; done
|
107
|
+
yaml="$yaml\nrubies:"
|
108
|
+
total=${#rubies[*]}
|
109
|
+
if [[ ! -z "$ZSH_VERSION" ]] ; then array_start=1 ; else array_start=0 ; fi
|
110
|
+
for (( index = $array_start ; index < $total + $array_start ; index++ )) ; do
|
111
|
+
if [[ ! -z "$rvm_debug_flag" ]] ; then
|
112
|
+
$rvm_scripts_path/log "debug" "${rubies[$index]}: ${statuses[$index]}"
|
113
|
+
fi
|
114
|
+
yaml="$yaml\n \"${rubies[$index]}\": ${statuses[$index]}"
|
115
|
+
done ; unset index array_start
|
116
|
+
mkdir -p log
|
117
|
+
echo -e "$yaml" | tee -a log/summary.yaml
|
118
|
+
|
119
|
+
return ${#errors[*]}
|
120
|
+
}
|
121
|
+
|
122
|
+
# Output the summary in a json format.
|
123
|
+
__rvm_json() {
|
124
|
+
json="{"
|
125
|
+
json="$json\n \"totals\": { \"rubies\": ${#rubies[*]}, \"successes\": ${#successes[*]}, \"errors\": ${#errors[*]}},"
|
126
|
+
json="$json\n \"successful\": [ "$(echo ${successes[*]} | sed 's# #", "#g')" ],"
|
127
|
+
json="$json\n \"errors\": [ "$(echo ${errors[*]} | sed 's# #", "#g')" ],"
|
128
|
+
json="$json\n \"rubies\": {"
|
129
|
+
|
130
|
+
total=${#rubies[*]}
|
131
|
+
if [[ ! -z "$ZSH_VERSION" ]] ; then array_start=1 ; else array_start=0 ; fi
|
132
|
+
for (( index = $array_start ; index < $total + $array_start ; index++ )) ; do
|
133
|
+
if [[ ! -z "$rvm_debug_flag" ]] ; then
|
134
|
+
$rvm_scripts_path/log "debug" "${rubies[$index]}: ${statuses[$index]}"
|
135
|
+
fi
|
136
|
+
json="$json\n {\"${rubies[$index]}\": ${statuses[$index]}}"
|
137
|
+
if (( $index + 1 < $total + $array_start )) ; then json="$json, " ; fi
|
138
|
+
done ; unset index array_start
|
139
|
+
json="$json\n }\n}"
|
140
|
+
|
141
|
+
mkdir -p log
|
142
|
+
echo -e "$json" | tee -a log/summary.json
|
143
|
+
|
144
|
+
return ${#errors[*]}
|
145
|
+
}
|
146
|
+
|
147
|
+
# Loop over a set or all rvm installed rubies to perform some action.
|
148
|
+
# Record the results and report based on CLI selections.
|
149
|
+
#__rvm_do() {
|
150
|
+
rubies=() ; successes=() ; errors=() ; statuses=()
|
151
|
+
# TODO: Extract the common functionality out of the if below
|
152
|
+
if [[ ! -z "$rvm_ruby_string" ]] ; then
|
153
|
+
unset rvm_ruby_interpreter rvm_ruby_version
|
154
|
+
__rvm_ruby_do
|
155
|
+
elif [[ ! -z "$rvm_ruby_version" ]] ;then
|
156
|
+
for rvm_ruby_string in $(echo $rvm_ruby_version | tr ',' ' ') ; do
|
157
|
+
__rvm_ruby_do
|
158
|
+
done
|
159
|
+
elif [[ ! -z "$rvm_ruby_interpreter" ]] ; then
|
160
|
+
unset rvm_ruby_string rvm_ruby_version
|
161
|
+
__rvm_ruby_do
|
162
|
+
else # all
|
163
|
+
for full_binary in $rvm_rubies_path/*/bin/ruby ; do
|
164
|
+
if [[ -x "$full_binary" ]] ; then
|
165
|
+
rvm_ruby_string="$(dirname $full_binary | xargs dirname | xargs basename)"
|
166
|
+
__rvm_ruby_do
|
167
|
+
fi
|
168
|
+
done ; unset full_binary
|
169
|
+
fi
|
170
|
+
|
171
|
+
if [[ ! -z "$rvm_summary_flag" ]] ; then __rvm_summary ; fi
|
172
|
+
if [[ ! -z "$rvm_yaml_flag" ]] ; then __rvm_yaml ; fi
|
173
|
+
if [[ ! -z "$rvm_json_flag" ]] ; then __rvm_json ; fi
|
174
|
+
|
175
|
+
$rvm_scripts_path/hook "after_do"
|
176
|
+
|
177
|
+
exit ${#errors[*]}
|
178
|
+
#}
|
179
|
+
|
data/scripts/update
CHANGED
@@ -35,17 +35,17 @@ while [[ $# -gt 0 ]] ; do
|
|
35
35
|
esac
|
36
36
|
done
|
37
37
|
|
38
|
-
|
39
|
-
|
40
|
-
if [[ -z "$rvm_path" ]] ; then
|
41
|
-
unset rvm_path
|
38
|
+
if [[ -z "$rvm_prefix" ]] ; then
|
39
|
+
__rvm_load_rvmrc
|
42
40
|
if [[ "root" = "$(whoami)" ]] ; then
|
43
|
-
|
41
|
+
rvm_prefix="/usr/local/"
|
44
42
|
else
|
45
|
-
|
43
|
+
rvm_prefix="$HOME/."
|
46
44
|
fi
|
47
45
|
fi
|
48
46
|
|
47
|
+
if [[ -z "$rvm_path" ]] ; then rvm_path="${rvm_prefix}rvm" ; fi
|
48
|
+
|
49
49
|
source scripts/initialize
|
50
50
|
__rvm_initialize
|
51
51
|
|
@@ -69,7 +69,7 @@ rvm_scripts_path="${rvm_scripts_path:-"$rvm_path/scripts"}"
|
|
69
69
|
rvm_config_path="${rvm_config_path:-"$rvm_path/config"}"
|
70
70
|
rvm_hooks_path="${rvm_hooks_path:-"$rvm_path/hooks"}"
|
71
71
|
rvm_tmp_path="${rvm_tmp_path:-"$rvm_path/tmp"}"
|
72
|
-
rvm_symlink_path="${rvm_symlink_path
|
72
|
+
rvm_symlink_path="${rvm_symlink_path:-$rvm_prefix/bin}"
|
73
73
|
|
74
74
|
mkdir -p $rvm_archives_path $rvm_src_path $rvm_log_path $rvm_bin_path $rvm_gems_path $rvm_rubies_path $rvm_config_path $rvm_hooks_path $rvm_tmp_path $rvm_symlink_path $HOME/.gem/cache
|
75
75
|
|
@@ -92,6 +92,11 @@ if [[ ! -s "$rvm_config_path/user" ]] ; then
|
|
92
92
|
echo '# Users settings file, overrides db file settings and persists across installs.' >> $rvm_config_path/user
|
93
93
|
fi
|
94
94
|
|
95
|
+
scripts="monitor match log install color db fetch log set libraries"
|
96
|
+
for script_name in $(echo $scripts) ; do
|
97
|
+
chmod +x $rvm_scripts_path/$script_name
|
98
|
+
done
|
99
|
+
|
95
100
|
#
|
96
101
|
# Bin Scripts
|
97
102
|
#
|
@@ -167,6 +172,7 @@ echo -e "\nThank you for using rvm. I hope that it makes your work easier and mo
|
|
167
172
|
echo -e "If you have any questions, issues and/or ideas for improvement please hop in #rvm on irc.freenode.net and let me know."
|
168
173
|
echo -e "My irc nickname is 'wayneeseguin' and I hang out from ~09:00-17:00EST and again from ~21:00EST-~00:00EST."
|
169
174
|
echo -e "If I do not respond right away, please hang around after asking your question, I will respond as soon as I am back."
|
175
|
+
echo -e "Be sure to get head often as rvm development happens fast, you can do this by typing 'rvm update --head'."
|
170
176
|
echo -e "\n w$(tput setaf 2)⦿‿⦿$(tput sgr0)t!"
|
171
177
|
echo -e "\n ~ Wayne"
|
172
178
|
echo -e "\n********************************************************************************"
|
@@ -176,13 +182,14 @@ if [[ "root" != "$(whoami)" ]] ; then
|
|
176
182
|
echo -e "\n1) Place the folowing line at the end of your shell's loading files(.bashrc and then .bash_profile for bash and .zshrc for zsh), after all path/variable settings:"
|
177
183
|
echo -e "\n if [[ -s $rvm_path/scripts/rvm ]] ; then source $rvm_path/scripts/rvm ; fi"
|
178
184
|
echo -e "\n2) Ensure that there is no 'return' from inside the .bashrc file. (otherwise rvm will be prevented from working properly)."
|
179
|
-
echo -e "\n This means that if you see '[ -z "$PS1" ] && return' then you must split your .bashrc"
|
185
|
+
echo -e "\n This means that if you see '[ -z "$PS1" ] && return' then you must remove it and split your .bashrc"
|
180
186
|
echo -e "\n Put everything *except the return code line(s)* into your .bash_profile, and everything above that code in your .bashrc."
|
187
|
+
echo -e "\n Be *sure* to REMOVE the '&& return' statement line."
|
181
188
|
echo -e "\n If you wish to DRY up your config you can 'source ~/.bashrc' at the top of your .bash_profile."
|
182
189
|
echo -e "\n4) Then $(tput setaf 1)CLOSE THIS SHELL$(tput sgr0) and open a new one in order to use rvm.\n"
|
183
190
|
fi
|
184
191
|
|
185
|
-
if grep '&& return'
|
192
|
+
if [[ -s $HOME/.bashrc ]] && grep '&& return' $HOME/.bashrc ; then
|
186
193
|
echo -e "\n\nWARNING: you have a 'return' statement in your .bashrc, likely this will cause untold havoc. Please remove it and refactor your profiles to be correct. If you have questions about this please visit #rvm on irc.freenode.net.\n\n"
|
187
194
|
fi
|
188
195
|
|
data/scripts/utility
CHANGED
@@ -22,6 +22,8 @@ __rvm_db() {
|
|
22
22
|
unset key value variable
|
23
23
|
}
|
24
24
|
|
25
|
+
is_a_function() { type $1 | head -n 1 | grep -q "function" ; }
|
26
|
+
|
25
27
|
# Ouput rvm environment information.
|
26
28
|
__rvm_info() {
|
27
29
|
|
@@ -123,8 +125,8 @@ __rvm_strings() {
|
|
123
125
|
results="$results $(__rvm_select ; echo $rvm_ruby_string)"
|
124
126
|
unset rvm_ruby_string
|
125
127
|
fi
|
126
|
-
done
|
127
|
-
echo $results
|
128
|
+
done
|
129
|
+
echo $results
|
128
130
|
unset results
|
129
131
|
return 0
|
130
132
|
}
|
@@ -179,7 +181,7 @@ __rvm_run() {
|
|
179
181
|
__rvm_cleanup_variables() {
|
180
182
|
__rvm_unset_ruby_variables
|
181
183
|
|
182
|
-
if [[ "$rvm_sticky_flag" = "1" ]] ; then export
|
184
|
+
if [[ "$rvm_sticky_flag" = "1" ]] ; then export rvm_gemset_name ; else unset rvm_gemset_name ; fi
|
183
185
|
|
184
186
|
unset rvm_action rvm_irbrc_file rvm_command rvm_error_message rvm_url rvm_force_flag rvm_all_flag rvm_reconfigure_flag rvm_make_flags rvm_bin_flag rvm_import_flag rvm_export_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_json_flag rvm_yaml_flag rvm_shebang_flag rvm_env_flag rvm_tail_flag rvm_use_flag rvm_dir_flag rvm_list_flag rvm_empty_flag rvm_file_name rvm_benchmark_flag rvm_clear_flag rvm_name_flag rvm_verbose_flag rvm_user_flag rvm_system_flag rvm_ruby_configure_flags rvm_uninstall_flag rvm_install_flag rvm_llvm_flag rvm_ruby_bits rvm_ruby_patch rvm_sticky_flag
|
185
187
|
}
|
@@ -204,6 +206,21 @@ __rvm_load_rvmrc() {
|
|
204
206
|
if [[ -f "$HOME/.rvmrc" ]] ; then source "$HOME/.rvmrc" ; fi
|
205
207
|
}
|
206
208
|
|
209
|
+
# Wrap the specified ruby code file in a Benchmark.bmbm block and execute it.
|
210
|
+
__rvm_benchmark() {
|
211
|
+
code="require \"benchmark\" \n Benchmark.bmbm do |benchmark| \n benchmark.report(\"${rvm_ruby_file}\") do \n"
|
212
|
+
echo -e "$code" > "$rvm_tmp_path/$$.rb"
|
213
|
+
unset code
|
214
|
+
cat $rvm_ruby_file >> "$rvm_tmp_path/$$.rb"
|
215
|
+
echo -e "\n end \nend\n" >> "$rvm_tmp_path/$$.rb"
|
216
|
+
rvm_ruby_args="$rvm_tmp_path/$$.rb"
|
217
|
+
rvm_benchmark_flag=1
|
218
|
+
action="ruby"
|
219
|
+
if [[ ! -z "$rvm_debug_flag" ]] ; then echo -e "$rvm_tmp_path/$$.rb:\n$(cat $rvm_tmp_path/$$.rb)" ; fi
|
220
|
+
$rvm_scripts_path/set $rvm_action $rvm_ruby_args
|
221
|
+
}
|
222
|
+
|
223
|
+
|
207
224
|
# Loop over the currently installed rubies and refresh their binscripts.
|
208
225
|
__rvm_bin_scripts() {
|
209
226
|
for rvm_ruby_binary in $rvm_rubies_path/*/bin/ruby ; do
|
@@ -244,7 +261,7 @@ __rvm_load_defaults() {
|
|
244
261
|
if [[ ! -s "$rvm_config_path/system" ]] ; then
|
245
262
|
for variable in RUBY_VERSION GEM_HOME GEM_PATH BUNDLE_PATH MY_RUBY_HOME ; do
|
246
263
|
eval value=\$${variable}
|
247
|
-
if [[ -z "$value" ]] ; then
|
264
|
+
if [[ -z "${value/ /}" ]] ; then
|
248
265
|
echo "unset ${variable}" >> $rvm_config_path/system
|
249
266
|
else
|
250
267
|
eval "export $variable"
|
@@ -315,7 +332,7 @@ __rvm_implode() {
|
|
315
332
|
if [[ -d "$rvm_path" ]] ; then
|
316
333
|
$rvm_scripts_path/log "info" "Hai! Removing $rvm_path"
|
317
334
|
rm -rf $rvm_path/
|
318
|
-
|
335
|
+
echo "$rvm_path has been removed."
|
319
336
|
else
|
320
337
|
$rvm_scripts_path/log "info" "It appears that $rvm_path is already non existant."
|
321
338
|
fi
|
@@ -349,15 +366,16 @@ __rvm_list_strings() {
|
|
349
366
|
# This is not meant to be used with scripting. This is for interactive mode usage only.
|
350
367
|
__rvm_list() {
|
351
368
|
action="$(echo $rvm_ruby_args | awk '{print $1}')"
|
369
|
+
|
352
370
|
if [[ "known" = "$action" ]] ; then
|
353
371
|
__rvm_list_known
|
354
372
|
elif [[ "default" = "$action" ]] ; then
|
355
373
|
__rvm_list_default
|
356
|
-
elif [[ "rubies" = "$action" ]] ; then
|
374
|
+
elif [[ -z "$action" ]] || [[ "rubies" = "$action" ]] ; then
|
357
375
|
__rvm_list_rubies
|
358
376
|
elif [[ "strings" = "$action" ]] ; then
|
359
377
|
__rvm_list_strings
|
360
|
-
else
|
378
|
+
else # help
|
361
379
|
echo -e "Usage: rvm list {known,default,rubies,strings}"
|
362
380
|
fi
|
363
381
|
}
|
@@ -389,7 +407,7 @@ __rvm_list_known() {
|
|
389
407
|
echo -e "jruby-1.2.0\njruby-1.3.1\njruby(-1.4.0) # the default\njruby-head"
|
390
408
|
echo -e "rbx(-prc1) # default\nrbx-head"
|
391
409
|
echo -e "ree-1.8.6\nree(-1.8.7) # the default\nree-1.8.6-head\nree-1.8.7-head"
|
392
|
-
echo -e "maglev(-
|
410
|
+
echo -e "maglev(-22907)\nmaglev-head"
|
393
411
|
echo -e "mput(-head) # shyouhei head, the default mput"
|
394
412
|
echo -e "ironruby-0.9.3 # (1.0 RC1)\nironruby-head"
|
395
413
|
if [[ "Darwin" = "$(uname)" ]] ; then
|
@@ -515,184 +533,6 @@ __rvm_reboot() {
|
|
515
533
|
fi ; unset response
|
516
534
|
}
|
517
535
|
|
518
|
-
# Perform an action using one of a selected ruby's specified binaries.
|
519
|
-
__rvm_ruby_do() {
|
520
|
-
__rvm_select
|
521
|
-
__rvm_use
|
522
|
-
|
523
|
-
binary="$(echo $rvm_action | sed 's#do$##')"
|
524
|
-
if [[ -x "$rvm_ruby_home/bin/$binary" ]] ; then
|
525
|
-
rm -f "$rvm_path/gems/cache"
|
526
|
-
ln -nfs "$HOME/.gem/cache" "$rvm_path/gems/cache"
|
527
|
-
binary="$rvm_ruby_home/bin/$binary"
|
528
|
-
elif [[ -x "$rvm_ruby_global_gems_path/bin/$binary" ]] ; then
|
529
|
-
binary="$rvm_ruby_global_gems_path/bin/$binary"
|
530
|
-
elif [[ -x "$rvm_ruby_gem_home/bin/$binary" ]] ; then
|
531
|
-
binary="$rvm_ruby_gem_home/bin/$binary"
|
532
|
-
elif [[ "system" = "$rvm_ruby_string" ]] && [[ -x "$(which $binary)" ]] ; then
|
533
|
-
binary="$(basename $(which $binary 2>/dev/null) 2>/dev/null)"
|
534
|
-
else
|
535
|
-
$rvm_scripts_path/log "warn" "'$binary not found for $rvm_ruby_string' either does not exist or is not executable? :("
|
536
|
-
__rvm_unset_ruby_variables
|
537
|
-
return 1
|
538
|
-
fi
|
539
|
-
|
540
|
-
if [[ ! -z "$rvm_ruby_mode" ]] ; then
|
541
|
-
rvm_ruby_string="$rvm_ruby_string-$rvm_ruby_mode"
|
542
|
-
rvm_ruby_mode="--$(echo $rvm_ruby_mode | sed 's/^m//')"
|
543
|
-
fi
|
544
|
-
|
545
|
-
load_path="$(dirname $(which $binary 2>/dev/null) 2>/dev/null):$rvm_ruby_load_path"
|
546
|
-
# TODO: the else case below should be run if $rvm_ruby_args =~ /\.rb$/
|
547
|
-
if [[ "ruby" = "$(basename $binary)" ]] && [[ "$rvm_benchmark_flag" -ne 1 ]] ; then
|
548
|
-
if $rvm_scripts_path/match "$rvm_ruby_args" "\.rb$" ; then
|
549
|
-
if [[ -z "$prefix" ]] ; then prefix="-S" ; fi
|
550
|
-
if ! $rvm_scripts_path/match "$rvm_ruby_args" "$prefix" ; then
|
551
|
-
rvm_ruby_args="$prefix $rvm_ruby_args"
|
552
|
-
fi
|
553
|
-
fi
|
554
|
-
rvm_command="$binary $rvm_ruby_mode $rvm_ruby_require -I$load_path $rvm_ruby_args"
|
555
|
-
elif [[ "gem" = "$(basename $binary)" ]] && $rvm_scripts_path/match "$rvm_ruby_args" '^install' ; then
|
556
|
-
#$rvm_scripts_path/gem install $rvm_ruby_args
|
557
|
-
rvm_command="$rvm_scripts_path/gems $rvm_ruby_mode $rvm_ruby_args $rvm_gem_options"
|
558
|
-
else
|
559
|
-
rvm_command="$binary $rvm_ruby_mode $rvm_ruby_args"
|
560
|
-
fi
|
561
|
-
|
562
|
-
if [[ ! -z "$rvm_json_flag" ]] || [[ ! -z "$rvm_yaml_flag" ]] || [[ ! -z "$rvm_summary_flag" ]] ; then
|
563
|
-
mkdir -p ./log/$rvm_ruby_string/
|
564
|
-
touch ./log/$rvm_ruby_string/$rvm_action.log ./log/$rvm_ruby_string/$rvm_action.error.log
|
565
|
-
eval "$rvm_command" >> ./log/$rvm_ruby_string/$rvm_action.log 2>> ./log/$rvm_ruby_string/$rvm_action.error.log
|
566
|
-
else
|
567
|
-
$rvm_scripts_path/log "info" "$rvm_ruby_string: $($rvm_ruby_home/bin/ruby -v $rvm_ruby_mode | tr "\n" ' ')"
|
568
|
-
eval "$rvm_command"
|
569
|
-
fi
|
570
|
-
result=$?
|
571
|
-
|
572
|
-
if [[ $result -eq 0 ]]; then
|
573
|
-
eval "successes=(${successes[*]} $rvm_ruby_string)"
|
574
|
-
else
|
575
|
-
eval "errors=(${errors[*]} $rvm_ruby_string)"
|
576
|
-
fi
|
577
|
-
eval "rubies=(${rubies[*]} $rvm_ruby_string)"
|
578
|
-
eval "statuses=(${statuses[*]} $result)"
|
579
|
-
__rvm_unset_ruby_variables
|
580
|
-
}
|
581
|
-
|
582
|
-
# Loop over a set or all rvm installed rubies to perform some action.
|
583
|
-
# Record the results and report based on CLI selections.
|
584
|
-
__rvm_do() {
|
585
|
-
__rvm_state
|
586
|
-
|
587
|
-
rubies=() ; successes=() ; errors=() ; statuses=()
|
588
|
-
# TODO: Extract the common functionality out of the if below
|
589
|
-
if [[ ! -z "$rvm_ruby_string" ]] ; then
|
590
|
-
unset rvm_ruby_interpreter rvm_ruby_version
|
591
|
-
__rvm_ruby_do
|
592
|
-
elif [[ ! -z "$rvm_ruby_version" ]] ;then
|
593
|
-
for rvm_ruby_string in $(echo $rvm_ruby_version | tr ',' ' ') ; do
|
594
|
-
__rvm_ruby_do
|
595
|
-
done
|
596
|
-
elif [[ ! -z "$rvm_ruby_interpreter" ]] ; then
|
597
|
-
unset rvm_ruby_string rvm_ruby_version
|
598
|
-
__rvm_ruby_do
|
599
|
-
else # all
|
600
|
-
for full_binary in $rvm_rubies_path/*/bin/ruby ; do
|
601
|
-
if [[ -x "$full_binary" ]] ; then
|
602
|
-
rvm_ruby_string="$(dirname $full_binary | xargs dirname | xargs basename)"
|
603
|
-
__rvm_ruby_do
|
604
|
-
fi
|
605
|
-
done ; unset full_binary
|
606
|
-
fi
|
607
|
-
|
608
|
-
if [[ ! -z "$rvm_summary_flag" ]] ; then __rvm_summary ; fi
|
609
|
-
if [[ ! -z "$rvm_yaml_flag" ]] ; then __rvm_yaml ; fi
|
610
|
-
if [[ ! -z "$rvm_json_flag" ]] ; then __rvm_json ; fi
|
611
|
-
|
612
|
-
__rvm_state
|
613
|
-
|
614
|
-
$rvm_scripts_path/hook "after_do"
|
615
|
-
|
616
|
-
return ${#errors[*]}
|
617
|
-
}
|
618
|
-
|
619
|
-
# Output the summary in a human readable format.
|
620
|
-
__rvm_summary() {
|
621
|
-
export successes errors statuses
|
622
|
-
summary="\nSummary:\n\n"
|
623
|
-
if [[ ${#successes[*]} -gt 0 ]] ; then
|
624
|
-
summary="$summary \033[0;32m${#successes[*]} successful: $(echo "${successes[*]}" | sed 's# #, #g')\033[0m\n"
|
625
|
-
fi
|
626
|
-
if [[ ${#errors[*]} -gt 0 ]] ; then
|
627
|
-
summary="$summary \033[0;31m${#errors[*]} errors: $(echo "${errors[*]}" | sed 's# #, #g')\033[0m\n"
|
628
|
-
fi
|
629
|
-
total=${#rubies[*]}
|
630
|
-
if [[ ! -z "$ZSH_VERSION" ]] ; then array_start=1 ; else array_start=0 ; fi
|
631
|
-
echo -e "$summary" | tee -a log/summary.log
|
632
|
-
return ${#errors[*]}
|
633
|
-
}
|
634
|
-
|
635
|
-
# Output the summary in a yaml format.
|
636
|
-
__rvm_yaml() {
|
637
|
-
export successes errors statuses
|
638
|
-
yaml="totals:\n rubies: ${#rubies[*]}\n successes: ${#successes[*]}\n errors: ${#errors[*]}\nsuccesses:"
|
639
|
-
for var in ${successes[*]} ; do yaml="$yaml\n - $var" ; done
|
640
|
-
yaml="$yaml\nerrors:"
|
641
|
-
for var in ${errors[*]} ; do yaml="$yaml\n - $var" ; done
|
642
|
-
yaml="$yaml\nrubies:"
|
643
|
-
total=${#rubies[*]}
|
644
|
-
if [[ ! -z "$ZSH_VERSION" ]] ; then array_start=1 ; else array_start=0 ; fi
|
645
|
-
for (( index = $array_start ; index < $total + $array_start ; index++ )) ; do
|
646
|
-
if [[ ! -z "$rvm_debug_flag" ]] ; then
|
647
|
-
$rvm_scripts_path/log "debug" "${rubies[$index]}: ${statuses[$index]}"
|
648
|
-
fi
|
649
|
-
yaml="$yaml\n \"${rubies[$index]}\": ${statuses[$index]}"
|
650
|
-
done ; unset index array_start
|
651
|
-
mkdir -p log
|
652
|
-
echo -e "$yaml" | tee -a log/summary.yaml
|
653
|
-
|
654
|
-
return ${#errors[*]}
|
655
|
-
}
|
656
|
-
|
657
|
-
# Output the summary in a json format.
|
658
|
-
__rvm_json() {
|
659
|
-
json="{"
|
660
|
-
json="$json\n \"totals\": { \"rubies\": ${#rubies[*]}, \"successes\": ${#successes[*]}, \"errors\": ${#errors[*]}},"
|
661
|
-
json="$json\n \"successful\": [ "$(echo ${successes[*]} | sed 's# #", "#g')" ],"
|
662
|
-
json="$json\n \"errors\": [ "$(echo ${errors[*]} | sed 's# #", "#g')" ],"
|
663
|
-
json="$json\n \"rubies\": {"
|
664
|
-
|
665
|
-
total=${#rubies[*]}
|
666
|
-
if [[ ! -z "$ZSH_VERSION" ]] ; then array_start=1 ; else array_start=0 ; fi
|
667
|
-
for (( index = $array_start ; index < $total + $array_start ; index++ )) ; do
|
668
|
-
if [[ ! -z "$rvm_debug_flag" ]] ; then
|
669
|
-
$rvm_scripts_path/log "debug" "${rubies[$index]}: ${statuses[$index]}"
|
670
|
-
fi
|
671
|
-
json="$json\n {\"${rubies[$index]}\": ${statuses[$index]}}"
|
672
|
-
if (( $index + 1 < $total + $array_start )) ; then json="$json, " ; fi
|
673
|
-
done ; unset index array_start
|
674
|
-
json="$json\n }\n}"
|
675
|
-
|
676
|
-
mkdir -p log
|
677
|
-
echo -e "$json" | tee -a log/summary.json
|
678
|
-
|
679
|
-
return ${#errors[*]}
|
680
|
-
}
|
681
|
-
|
682
|
-
# Wrap the specified ruby code file in a Benchmark.bmbm block and execute it.
|
683
|
-
__rvm_benchmark() {
|
684
|
-
code="require \"benchmark\" \n Benchmark.bmbm do |benchmark| \n benchmark.report(\"${rvm_ruby_file}\") do \n"
|
685
|
-
echo -e "$code" > "$rvm_tmp_path/$$.rb"
|
686
|
-
unset code
|
687
|
-
cat $rvm_ruby_file >> "$rvm_tmp_path/$$.rb"
|
688
|
-
echo -e "\n end \nend\n" >> "$rvm_tmp_path/$$.rb"
|
689
|
-
rvm_ruby_args="$rvm_tmp_path/$$.rb"
|
690
|
-
rvm_benchmark_flag=1
|
691
|
-
rvm_action="ruby"
|
692
|
-
if [[ ! -z "$rvm_debug_flag" ]] ; then echo -e "$rvm_tmp_path/$$.rb:\n$(cat $rvm_tmp_path/$$.rb)" ; fi
|
693
|
-
__rvm_do
|
694
|
-
}
|
695
|
-
|
696
536
|
# Create the irbrc for the currently selected ruby installation.
|
697
537
|
__rvm_irbrc() {
|
698
538
|
if [[ -d "$rvm_ruby_home" ]] && [[ ! -s "$rvm_ruby_irbrc" ]] ; then
|
@@ -777,27 +617,27 @@ __rvm_make_flags() {
|
|
777
617
|
fi
|
778
618
|
}
|
779
619
|
|
780
|
-
# Select a
|
620
|
+
# Select a gemset based on CLI set options and environment.
|
781
621
|
# This only sets 'rvm_ruby_gem_home'
|
782
|
-
|
622
|
+
__rvm_gemset_select() {
|
783
623
|
if ! which gem > /dev/null 2>&1 ; then return 0 ; fi
|
784
624
|
|
785
625
|
rvm_ruby_global_gems_path="$rvm_gems_path/$rvm_ruby_string%global"
|
786
626
|
|
787
|
-
if [[ -z "$
|
627
|
+
if [[ -z "$rvm_gemset_name" ]] ; then
|
788
628
|
# No longer defaulting to 'sticky' gem sets.
|
789
629
|
# Set 'rvm_sticky_flag=1' in ~/.rvmrc to enable.
|
790
630
|
if [[ ! -z "$rvm_sticky_flag" ]] ; then
|
791
631
|
if [[ ! -z "$GEM_HOME" ]] ; then
|
792
|
-
|
632
|
+
rvm_gemset_name=$(echo $GEM_HOME | xargs basename | awk -F'%' '{print $2}')
|
793
633
|
fi
|
794
634
|
if [[ ! -z "$rvm_ruby_gem_home" ]] ; then
|
795
|
-
|
635
|
+
rvm_gemset_name=$(echo $rvm_ruby_gem_home | xargs basename | awk -F'%' '{print $2}')
|
796
636
|
fi
|
797
637
|
fi
|
798
638
|
|
799
|
-
if [[ ! -z "$
|
800
|
-
rvm_ruby_gem_home="$rvm_gems_path/$rvm_ruby_string%$
|
639
|
+
if [[ ! -z "$rvm_gemset_name" ]] && ! $rvm_scripts_path/match "$rvm_gemset_name" "^[0-9]\.[0-9]" ; then
|
640
|
+
rvm_ruby_gem_home="$rvm_gems_path/$rvm_ruby_string%$rvm_gemset_name"
|
801
641
|
else
|
802
642
|
if [[ ! -z "$rvm_ruby_string" ]] && [[ "$rvm_ruby_interpreter" != "system" ]] ; then
|
803
643
|
rvm_ruby_gem_home="$rvm_gems_path/$rvm_ruby_string"
|
@@ -809,14 +649,14 @@ __rvm_gems_select() {
|
|
809
649
|
unset rvm_ruby_gem_home
|
810
650
|
fi
|
811
651
|
fi
|
812
|
-
if [[ -z "$
|
652
|
+
if [[ -z "$rvm_gemset_name" ]] ; then unset rvm_gemset_name ; fi
|
813
653
|
else
|
814
|
-
rvm_ruby_gem_home="$rvm_gems_path/$rvm_ruby_string%$
|
654
|
+
rvm_ruby_gem_home="$rvm_gems_path/$rvm_ruby_string%$rvm_gemset_name"
|
815
655
|
fi
|
816
656
|
|
817
657
|
# If the gemset does not exist, then notify the user as such and abort the action.
|
818
|
-
if [[ ! -d "$rvm_ruby_gem_home" ]] && [[ ! -z "$
|
819
|
-
$rvm_scripts_path/log "error" "Gemset '$
|
658
|
+
if [[ ! -d "$rvm_ruby_gem_home" ]] && [[ ! -z "$rvm_gemset_name" ]] && [[ -z "$rvm_create_flag" ]]; then
|
659
|
+
$rvm_scripts_path/log "error" "Gemset '$rvm_gemset_name' does not exist, rvm gems create '$rvm_gemset_name' first."
|
820
660
|
return 1
|
821
661
|
fi
|
822
662
|
|
@@ -832,11 +672,11 @@ __rvm_gems_select() {
|
|
832
672
|
fi
|
833
673
|
|
834
674
|
# Some sanity checking.
|
835
|
-
if [[ ! -e "$
|
836
|
-
chmod u+w "$
|
675
|
+
if [[ ! -e "$rvm_gems_cache_path" ]] ; then mkdir -p $rvm_gems_cache_path ; fi
|
676
|
+
chmod u+w "$rvm_gems_cache_path"
|
837
677
|
rm -f "$rvm_gems_path/cache"
|
838
|
-
ln -nfs "$
|
839
|
-
chmod u+w "$
|
678
|
+
ln -nfs "$rvm_gems_cache_path" "$rvm_gems_path/cache"
|
679
|
+
chmod u+w "$rvm_gems_cache_path"
|
840
680
|
# /TODO
|
841
681
|
|
842
682
|
# Careful not to nuke system gems cache.
|
@@ -860,18 +700,18 @@ __rvm_gems_select() {
|
|
860
700
|
fi ; export rvm_ruby_gem_path rvm_ruby_gem_home
|
861
701
|
}
|
862
702
|
|
863
|
-
# Use a
|
864
|
-
|
703
|
+
# Use a gemset specified by 'rvm_ruby_gem_home'
|
704
|
+
__rvm_gemset_use() {
|
865
705
|
if [[ -z "$rvm_ruby_selected_flag" ]] ; then __rvm_select ; fi
|
866
706
|
|
867
707
|
if [[ ! -z "$rvm_ruby_gem_home" ]] ; then
|
868
708
|
if [[ ! -d "$rvm_ruby_gem_home" ]] ; then
|
869
|
-
$rvm_scripts_path/log "error" "Gemset '$
|
709
|
+
$rvm_scripts_path/log "error" "Gemset '$rvm_gemset_name' does not exist, rvm gems create '$rvm_gemset_name' first."
|
870
710
|
return 1
|
871
711
|
fi
|
872
712
|
|
873
713
|
if [[ "$rvm_interactive" = 1 ]] ; then
|
874
|
-
$rvm_scripts_path/log "info" "
|
714
|
+
$rvm_scripts_path/log "info" "gemset : ${rvm_gemset_name:-default}"
|
875
715
|
fi
|
876
716
|
|
877
717
|
export GEM_HOME="$rvm_ruby_gem_home"
|