rvm 0.1.18 → 0.1.19
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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"
|