/
selector
executable file
·484 lines (430 loc) · 19.6 KB
/
selector
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
#!/usr/bin/env bash
# __rvm_select implementation version patch_level
__rvm_select() {
if [[ -z "$rvm_ruby_string" ]] ; then
rvm_ruby_string="${rvm_ruby_interpreter}"
if [[ ! -z "$rvm_ruby_version" ]] ; then rvm_ruby_string="$rvm_ruby_string-$rvm_ruby_version" ; fi
if [[ ! -z "$rvm_ruby_patch_level" ]] ; then rvm_ruby_string="$rvm_ruby_string-$rvm_ruby_patch_level" ; fi
if [[ ! -z "$rvm_ruby_revision" ]] ; then rvm_ruby_string="$rvm_ruby_string-$rvm_ruby_revision" ; fi
fi
__rvm_ruby_string
rvm_archive_extension="tar.gz"
case "$rvm_ruby_interpreter" in
macruby)
if [[ "Darwin" = "$(uname)" ]] ; then
rvm_ruby_package_name=${rvm_ruby_interpreter}-${rvm_ruby_version}
if [[ "$rvm_head_flag" -eq 1 ]] ; then
unset rvm_ruby_version rvm_ruby_tag
rvm_ruby_revision="head"
__rvm_db "macruby_repo_url" "rvm_ruby_repo_url"
rvm_url="$rvm_ruby_repo_url"
rvm_ruby_string="${rvm_ruby_interpreter}-head"
elif [[ "nightly" = "$rvm_ruby_version" ]] ; then
__rvm_db "macruby_nightly_url" "rvm_url"
rvm_ruby_string="${rvm_ruby_interpreter}-${rvm_ruby_version}"
rvm_ruby_package_name="${rvm_ruby_interpreter}_nightly-${rvm_ruby_version}"
rvm_ruby_package_file="$rvm_ruby_package_name"
else
__rvm_db "macruby_version" "rvm_ruby_version"
__rvm_db "macruby_url" "rvm_url"
rvm_ruby_package_name="MacRuby%20${rvm_ruby_version}.zip"
rvm_ruby_package_file="$rvm_ruby_package_name"
rvm_url="$rvm_url/$rvm_ruby_package_name"
fi
unset rvm_ruby_patch_level
else
$rvm_scripts_path/log "fail" "MacRuby can only be installed on a Darwin OS."
fi
;;
rbx|rubinius)
rvm_archive_extension="tar.gz"
rvm_ruby_interpreter="rbx"
rvm_ruby_version=${rvm_ruby_version:-$(__rvm_db "rbx_version")}
rvm_ruby_repo_url=${rvm_rbx_repo_url:-$(__rvm_db "rubinius_repo_url")}
if [[ -z "$rvm_head_flag" ]] ; then
rvm_ruby_patch_level=${rvm_ruby_patch_level:-$(__rvm_db "rbx_patch_level")}
rvm_ruby_string="${rvm_ruby_string/-prc/-rc}"
rvm_ruby_string="$(echo "$rvm_ruby_string" | sed 's#-p*#-#')"
rvm_ruby_package_file="$(echo "rubinius-${rvm_ruby_version}-${rvm_ruby_patch_level}.${rvm_archive_extension}" | sed 's#-p*#-#' )"
__rvm_db "rbx_url" "rvm_url"
rvm_url="$rvm_url/$rvm_ruby_package_file"
else
unset rvm_ruby_patch_level rvm_ruby_version
rvm_ruby_string="$rvm_ruby_interpreter-head"
fi
;;
jruby)
unset rvm_ruby_patch_level
if [[ ! -z "$rvm_head_flag" ]] ; then
rvm_ruby_version="head"
rvm_ruby_string="jruby-head"
rvm_ruby_repo_url="${rvm_ruby_repo_url:-$(__rvm_db "jruby_repo_url")}"
rvm_url="${rvm_ruby_repo_url:-$(__rvm_db "jruby_repo_url")}"
else
rvm_archive_extension="tar.gz"
rvm_ruby_version="${rvm_ruby_version:-"$(__rvm_db "jruby_version")"}"
jruby_url="$(__rvm_db "jruby_url")"
rvm_ruby_package_file="${rvm_ruby_interpreter}-bin-${rvm_ruby_version}"
rvm_ruby_package_name="${rvm_ruby_interpreter}-${rvm_ruby_version}"
rvm_ruby_string="${rvm_ruby_interpreter}-${rvm_ruby_version}"
rvm_url="${jruby_url}/${rvm_ruby_version}/${rvm_ruby_package_file}.tar.gz"
unset jruby_url
fi
alias jruby_ng="jruby --ng"
alias jruby_ng_server="jruby --ng-server"
;;
maglev)
unset rvm_ruby_patch_level
maglev_url="$(__rvm_db "maglev_url")"
if [[ ! -z "$rvm_head_flag" ]] ; then
rvm_ruby_version="head"
rvm_ruby_string="maglev-head"
rvm_ruby_repo_url="${rvm_ruby_repo_url:-$(__rvm_db "maglev_repo_url")}"
rvm_url="${rvm_ruby_repo_url:-$(__rvm_db "maglev_repo_url")}"
else
system="$(uname -s)"
arch="$(uname -m)"
rvm_ruby_package_file="MagLev-${rvm_ruby_version}.${system}-${arch}"
rvm_gemstone_package_file="GemStone-${rvm_ruby_version}.${system}-${arch}"
rvm_ruby_version="${rvm_ruby_version:-"$(__rvm_db "maglev_version")"}"
rvm_ruby_package_name="${rvm_ruby_interpreter}-${rvm_ruby_version}"
rvm_ruby_string="${rvm_ruby_interpreter}-${rvm_ruby_version}"
rvm_url="${rvm_ruby_url:-"$maglev_url/${rvm_ruby_package_file}.${rvm_archive_extension}"}"
rvm_gemstone_url="${rvm_gemstone_url:-"$maglev_url/${rvm_gemstone_package_file}.${rvm_archive_extension}"}"
export MAGLEV_HOME="$rvm_rubies_path/$rvm_ruby_string"
fi
;;
ironruby)
unset rvm_ruby_patch_level
if [[ "$rvm_head_flag" -eq 1 ]] ; then
rvm_ruby_version="head"
rvm_ruby_string="${rvm_ruby_interpreter}-${rvm_ruby_version}"
rvm_ruby_package_name="${rvm_ruby_string}"
rvm_ruby_repo_url="${rvm_ruby_repo_url:-$(__rvm_db "ironruby_repo_url")}"
rvm_url="${rvm_ruby_repo_url:-$(__rvm_db "ironruby_repo_url")}"
else
rvm_archive_extension="zip"
rvm_ruby_version=${rvm_ruby_version:-"$(__rvm_db "ironruby_version")"}
rvm_ruby_string="${rvm_ruby_interpreter}-${rvm_ruby_version}"
rvm_ruby_package_name="${rvm_ruby_interpreter}-${rvm_ruby_version}"
rvm_ruby_package_file="${rvm_ruby_interpreter}-${rvm_ruby_version}.${rvm_archive_extension}"
rvm_url="$(__rvm_db "ironruby_${rvm_ruby_version}_url")${rvm_ruby_package_file}"
fi
export rvm_ruby_version rvm_ruby_string rvm_ruby_package_name rvm_ruby_repo_url rvm_url rvm_archive_extension
;;
ree)
rvm_ruby_interpreter=ree
rvm_ruby_version=${rvm_ruby_version:-"$(__rvm_db "ree_version")"}
if [[ ! -z "$rvm_ruby_patch_level" ]] ; then
rvm_ruby_patch_level="$(echo $rvm_ruby_patch_level | sed 's#^p##')"
rvm_ruby_string="${rvm_ruby_interpreter}-${rvm_ruby_version}-${rvm_ruby_patch_level}"
elif [[ "$rvm_head_flag" = 1 ]] ; then
rvm_ruby_string="${rvm_ruby_interpreter}-${rvm_ruby_version}-head"
fi
if [[ "$rvm_ruby_version" != "head" ]] ; then
if [[ ! -z "$rvm_ruby_revision" ]] ; then
unset rvm_ruby_patch_level rvm_ruby_package_file
rvm_ruby_package_name="ree-$rvm_ruby_version-$rvm_ruby_revision"
else
rvm_ruby_package_file="ruby-enterprise-$rvm_ruby_version-$rvm_ruby_patch_level"
rvm_url="$(__rvm_db "${rvm_ruby_interpreter}_${rvm_ruby_version}_url")/$rvm_ruby_package_file.tar.gz"
fi
fi
if ! $rvm_scripts_path/match "$rvm_ruby_version" "^1\.8" ; then
$rvm_scripts_path/log "fail" "Unknown Ruby Enterprise Edition version: $rvm_ruby_version"
fi
;;
mput|shyouhei)
rvm_ruby_interpreter="mput"
rvm_ruby_version="head"
rvm_ruby_string="mput-head"
unset rvm_ruby_patch_level
rvm_ruby_repo_url=${rvm_mput_repo_url:-"$(__rvm_db "shyouhei_repo_url")"}
rvm_url=$rvm_ruby_repo_url
unset rvm_ruby_configure rvm_ruby_make rvm_ruby_make_install
;;
ruby)
if [[ -z "$rvm_ruby_version" ]] && [[ -z "$rvm_head_flag" ]]; then
$rvm_scripts_path/log "fail" "Unknown ruby version: $rvm_ruby_version"
else
rvm_ruby_repo_url="${rvm_ruby_repo_url:-"$(__rvm_db "ruby_repo_url")"}"
fi
;;
current)
ruby_binary="$(command -v ruby)"
if [[ $? -eq 0 ]] && $rvm_scripts_path/match "$ruby_binary" "rvm" ; then
rvm_ruby_string="$(dirname "$ruby_binary" | xargs dirname | xargs basename)"
else
rvm_ruby_interpreter="system"
fi
;;
default|system|user)
#no-op?
;;
*)
if [[ ! -z "$MY_RUBY_HOME" ]] ; then
rvm_ruby_string=$(basename $MY_RUBY_HOME)
__rvm_select
else
if [[ -z "$rvm_ruby_string" ]] ; then
$rvm_scripts_path/log "fail" "Ruby implementation '$rvm_ruby_interpreter' is not known."
return 1
fi
fi
esac
__rvm_gemset_select
if [[ ! -z "$rvm_ruby_interpreter" ]] && [[ "system" != "$rvm_ruby_interpreter" ]] && [[ "default" != "$rvm_ruby_interpreter" ]] ; then
if [[ ! -z "$rvm_ruby_version" ]] ; then
rvm_release_version=$(echo $rvm_ruby_version | awk -F'.' '{ print $1 }')
rvm_major_version=$(echo $rvm_ruby_version | awk -F'.' '{ print $2 }')
rvm_minor_version=$(echo $rvm_ruby_version | awk -F'.' '{ print $3 }')
fi
rvm_ruby_package_name="${rvm_ruby_package_name:-$rvm_ruby_string}"
rvm_ruby_home="$rvm_rubies_path/$rvm_ruby_string"
rvm_ruby_log_path="$rvm_log_path/$rvm_ruby_string"
rvm_ruby_src_path="$rvm_src_path/$rvm_ruby_string"
rvm_ruby_binary="$rvm_ruby_home/bin/ruby"
rvm_ruby_irbrc="$rvm_ruby_home/.irbrc"
rvm_ruby_gem_home="${rvm_gems_path}/${rvm_ruby_string}"
rvm_ruby_gem_path="${rvm_ruby_gem_home}:${rvm_ruby_gem_home}@global"
if [[ "maglev" = "$rvm_ruby_interpreter" ]] ; then
export MAGLEV_HOME="$rvm_ruby_home"
export GEMSTONE_GLOBAL_DIR=$MAGLEV_HOME
fi
if [[ ! -z "$rvm_gemset_name" ]] ; then
rvm_ruby_gem_home="${rvm_ruby_gem_home}${rvm_gemset_separator}${rvm_gemset_name}"
rvm_ruby_gem_path="${rvm_ruby_gem_home}:${rvm_gems_path}/${rvm_ruby_string}${rvm_gemset_separator}global"
fi
rvm_ruby_selected_flag=1
mkdir -p $rvm_ruby_log_path
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_release_version 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
else
rvm_ruby_interpreter="${rvm_ruby_interpreter:-system}"
fi
}
__rvm_use() {
if [[ -z "$rvm_ruby_selected_flag" ]] ; then __rvm_select $* ; fi
if [[ -z "$rvm_ruby_interpreter" ]] ; then rvm_ruby_interpreter="system" ; fi
if [[ "system" = "$rvm_ruby_interpreter" ]] ; then
unset GEM_HOME GEM_PATH BUNDLE_PATH MY_RUBY_HOME RUBY_VERSION IRBRC
new_path="$(echo $PATH | tr ':' '\n' | awk '$0 !~ /rvm/' | paste -sd : -)"
new_path="$rvm_bin_path:$new_path"
if [[ -s $rvm_config_path/system ]] ; then
grep "MY_RUBY_HOME='$rvm_rubies_path" "$rvm_config_path/system" > /dev/null
if [[ $? -eq 0 ]] ; then
rm -f $rvm_config_path/system # 'system' should *not* point to an rvm ruby.
else
source $rvm_config_path/system
fi
fi
if [[ "root" = "$(whoami)" ]] ; then
for binary in ruby gem irb ri rdoc rake erb testrb ; do
rm -f "$rvm_bin_path/$binary"
done
fi
if [[ ! -z "$rvm_verbose_flag" ]] ; then
$rvm_scripts_path/log "info" "Now using system ruby."
fi
export rvm_ruby_string="system"
else
GEM_HOME="$rvm_ruby_gem_home"
GEM_PATH="$rvm_ruby_gem_path"
BUNDLE_PATH="$rvm_ruby_gem_home"
MY_RUBY_HOME="$rvm_ruby_home"
RUBY_VERSION="$rvm_ruby_string"
IRBRC="$rvm_ruby_irbrc"
export GEM_HOME GEM_PATH BUNDLE_PATH MY_RUBY_HOME RUBY_VERSION IRBRC
if [[ -z "$IRBRC" ]] ; then unset IRBRC ; fi
if [[ ! -d $MY_RUBY_HOME ]] ; then
$rvm_scripts_path/log "warn" "$rvm_ruby_interpreter $rvm_ruby_string is not installed."
if [[ ! -z "$rvm_install_on_use_flag" ]] ; then
$rvm_scripts_path/manage "install" "$rvm_ruby_string"
else
$rvm_scripts_path/log "info" "To install do: 'rvm install $rvm_ruby_string'"
return 1
fi
fi
# Ensure the environment file for the selected ruby exists.
__rvm_ensure_has_enviroment_files
if [[ ! -z "$rvm_verbose_flag" ]] ; then
$rvm_scripts_path/log "info" "Using $(basename $GEM_HOME | tr '-' ' ' | sed 's/'${rvm_gemset_separator}'/ with gemset /')"
fi
new_path="$(echo $PATH | tr ':' '\n' | awk '$0 !~ /rvm/' | paste -sd : -)"
new_path="$GEM_HOME/bin:$rvm_ruby_global_gems_path/bin:$MY_RUBY_HOME/bin:$rvm_bin_path:$new_path"
fi
if [[ ! -z "$rvm_default_flag" ]] && [[ "default" != "$rvm_ruby_interpreter" ]] ; then
if [[ "root" = "$(whoami)" ]] ; then
# By not providing the name it uses the base ruby binary names.
$rvm_scripts_path/wrapper $rvm_ruby_string
fi
local environment_id="$(__rvm_environment_identifier)"
if [[ "system" = "$rvm_ruby_interpreter" ]] ; then
$rvm_scripts_path/alias delete default &> /dev/null
rm -f $rvm_config_path/default
rm -f $rvm_bin_path/default*
rm -f $rvm_environments_path/default
rm -f $rvm_wrappers_path/default
else
RUBY_VERSION="$($rvm_ruby_home/bin/ruby -v | sed 's#^\(.*\) (.*$#\1#')"
export GEM_HOME GEM_PATH BUNDLE_PATH MY_RUBY_HOME RUBY_VERSION
# Delete + then create the default alias.
$rvm_scripts_path/alias delete default &> /dev/null
$rvm_scripts_path/alias create default "$environment_id" >& /dev/null
ln -nfs $rvm_environments_path/$environment_id $rvm_environments_path/default
ln -nfs $rvm_wrappers_path/$environment_id $rvm_wrappers_path/default
fi
fi ; unset rvm_default_flag
if [[ ! -z "$rvm_wrapper_name" ]] ; then
$rvm_scripts_path/wrapper "$rvm_ruby_string" "$rvm_wrapper_name" > /dev/null 2>&1
unset rvm_wrapper_name
fi
if [[ ! -z "$rvm_rvmrc_flag" ]] ; then __rvm_set_rvmrc ; fi
# Export ruby string and gem set me for extrnal scripts to take advantage of them.
if [[ ! -z "$rvm_ruby_string" ]] ; then export rvm_ruby_string ; fi
if [[ ! -z "$rvm_gemset_name" ]] ; then export rvm_gemset_name ; fi
if [[ ! -z "$new_path" ]] ; then export PATH="$new_path" ; unset new_path ; fi
if [[ "maglev" = "$rvm_ruby_interpreter" ]] ; then
export MAGLEV_HOME="$rvm_ruby_home"
export GEMSTONE_GLOBAL_DIR=$MAGLEV_HOME
if [[ -x "$MAGLEV_HOME/gemstone/bin/gslist" ]] ; then
$MAGLEV_HOME/gemstone/bin/gslist -clv > /dev/null 2>&1 ; result=$?
if [[ $result -eq 1 ]] ; then $rvm_ruby_home/bin/maglev start ; fi
fi
fi
rvm_hook="after_use" ; source $rvm_scripts_path/hook
}
__rvm_ruby_string() {
# rvm_ruby_string may designate any of the following items:
# * rvm_gemset_name
# * rvm_ruby_interpreter
# * rvm_ruby_version
# * rvm_ruby_patch_level
# * rvm_ruby_revision
# * rvm_ruby_tag
# * rvm_ruby_patch
# Alias'd rubies
if [[ -z "$rvm_expanding_aliases" ]]; then
rvm_ruby_string="${rvm_ruby_string:-"default"}"
expanded_alias_name="$($rvm_scripts_path/alias show "$rvm_ruby_string" 2>/dev/null)"
if [[ -n "$expanded_alias_name" ]]; then
rvm_ruby_string="$expanded_alias_name"
elif [[ "$rvm_ruby_string" = default ]]; then
# Default is not a known value. Instead, we need to therefore set it to system.
rvm_ruby_string="system"
fi
fi
set_name=$(echo "$rvm_ruby_string" | awk -F${rvm_gemset_separator} '{print $2}')
if [[ ! -z "$set_name" ]] ; then rvm_gemset_name="$set_name" ; fi
ruby_string=$(echo "$rvm_ruby_string" | awk -F${rvm_gemset_separator} '{print $1}')
__rvm_unset_ruby_variables
for string in $(echo $ruby_string | tr '-' ' ') ; do
if [[ "head" = "$string" ]] ; then
rvm_ruby_revision="head"
unset rvm_ruby_patch_level rvm_ruby_revision rvm_ruby_tag
export rvm_head_flag=1
elif [[ "system" = "$string" ]] ; then
rvm_ruby_interpreter="system"
unset rvm_ruby_patch_level rvm_ruby_tag rvm_head_flag rvm_ruby_revision rvm_ruby_version rvm_gemset_name
return
elif [[ "nightly" = "$string" ]] ; then
rvm_ruby_version="nightly"
rvm_nightly_flag=1
break
elif $rvm_scripts_path/match "$string" "^preview" ; then
rvm_ruby_patch_level="$string"
elif $rvm_scripts_path/match "$string" "^rc[0-9]" ; then
rvm_ruby_patch_level="$string"
elif $rvm_scripts_path/match "$string" "^[0-9]\.[0-9]" ; then
rvm_ruby_version="$string"
unset rvm_ruby_revision rvm_ruby_tag
elif $rvm_scripts_path/match "$string" "^p[0-9]" ; then
rvm_ruby_patch_level="$string"
elif $rvm_scripts_path/match "$string" "^[0-9][0-9]" ; then
if [[ "ree" = "$rvm_ruby_interpreter" ]] ; then
rvm_ruby_patch_level="$string"
unset rvm_ruby_revision
elif [[ "rbx" = "$rvm_ruby_interpreter" ]] ; then
rvm_ruby_patch_level="$string"
elif [[ "maglev" = "$rvm_ruby_interpreter" ]] ; then
rvm_ruby_version="$string"
unset rvm_ruby_revision rvm_ruby_patch_level
else
rvm_ruby_revision="r$string"
fi
elif $rvm_scripts_path/match "$string" "^r[0-9]" ; then
unset rvm_ruby_patch_level
rvm_ruby_revision="$string"
elif $rvm_scripts_path/match "$string" "^s[0-9]" ; then
unset rvm_ruby_revision
rvm_ruby_sha="$string"
elif $rvm_scripts_path/match "$string" "^t[v0-9]" ; then
unset rvm_ruby_patch_level rvm_ruby_revision
rvm_ruby_tag="$string"
elif $rvm_scripts_path/match "$string" "^m[0-9]" ; then
rvm_ruby_mode="$string"
elif $rvm_scripts_path/match "$string" "^h[a-z0-9]" ; then
unset rvm_ruby_patch_level rvm_ruby_revision rvm_ruby_tag
rvm_ruby_patch="$string"
elif $rvm_scripts_path/match "$string" "^u[a-z0-9]" ; then
unset rvm_ruby_patch_level rvm_ruby_revision rvm_ruby_tag rvm_ruby_patch
rvm_ruby_user_tag="$string"
elif $rvm_scripts_path/match "$string" "^b[0-9][0-9]" ; then
rvm_ruby_bits="$string"
elif $rvm_scripts_path/match "ruby rbx jruby macruby ree rubinius maglev mput shyouhei ironruby " "$string " ; then
# NOTE: The space at the end of each of the above strings is *very* important.
rvm_ruby_interpreter="$string"
else
$rvm_scripts_path/log "error" "Unknown ruby string component: '$string'"
return 1
fi
done
# Unspecified interpreter
if [[ -z "$rvm_ruby_interpreter" ]] ; then
if $rvm_scripts_path/match "$rvm_ruby_version" "^1\.[8-9]" ; then
rvm_ruby_interpreter="ruby"
elif $rvm_scripts_path/match "$rvm_ruby_version" "^0.5" ; then
rvm_ruby_interpreter="macruby"
elif $rvm_scripts_path/match "$rvm_ruby_version" "^1.[2-4]" ; then
rvm_ruby_interpreter="jruby"
fi
fi
# Unspecified version
if [[ -z "$rvm_ruby_version" ]] && [[ -z "$rvm_head_flag" ]]; then
rvm_ruby_version=${rvm_ruby_version:-"$(__rvm_db "${rvm_ruby_interpreter}_version")"}
fi
if [[ -z "$rvm_ruby_version" ]] ; then
rvm_ruby_string="${rvm_ruby_interpreter}"
else
rvm_ruby_string="${rvm_ruby_interpreter}-${rvm_ruby_version}"
fi
# Head
if [[ "$rvm_head_flag" -eq 1 ]] ; then
rvm_ruby_string="${rvm_ruby_string}-head"
elif [[ ! -z "$rvm_ruby_revision" ]] ; then
rvm_ruby_string="${rvm_ruby_string}-${rvm_ruby_revision}"
elif [[ ! -z "$rvm_ruby_tag" ]] ; then
rvm_ruby_string="${rvm_ruby_string}-${rvm_ruby_tag}"
elif [[ ! -z "$rvm_ruby_patch_level" ]] ; then
rvm_ruby_string="${rvm_ruby_string}-${rvm_ruby_patch_level}"
elif [[ ! -z "$rvm_ruby_user_tag" ]] ; then
rvm_ruby_string="${rvm_ruby_string}-${rvm_ruby_user_tag}"
else
patch_level="$(__rvm_db "${rvm_ruby_interpreter}_${rvm_ruby_version}_patch_level")"
if [[ ! -z "$patch_level" ]] ; then
if [[ "ree" = "$rvm_ruby_interpreter" ]] || [[ "rbx" = "$rvm_ruby_interpreter" ]] ; then
rvm_ruby_patch_level="${patch_level}"
else
rvm_ruby_patch_level="p${patch_level}"
fi
fi
if [[ ! -z "$rvm_ruby_patch_level" ]] ; then
rvm_ruby_patch_level="$(echo $rvm_ruby_patch_level | sed 's#^pp#p#')"
rvm_ruby_string="${rvm_ruby_string}-${rvm_ruby_patch_level}"
if [[ "ree" = "$rvm_ruby_interpreter" ]] || [[ "rbx" = "$rvm_ruby_interpreter" ]] ; then
rvm_ruby_string="$(echo $rvm_ruby_string | sed 's#-p*#-#')"
else
rvm_ruby_string="$(echo $rvm_ruby_string | sed 's#-pp#-p#')"
fi
fi
fi
}