rvm 1.1.4 → 1.1.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (112) hide show
  1. data/lib/VERSION.yml +1 -1
  2. data/lib/rvm/environment.rb +1 -1
  3. data/lib/rvm/shell/shell_wrapper.sh +1 -1
  4. data/rvm.gemspec +3 -110
  5. metadata +4 -111
  6. data/binscripts/rvm +0 -76
  7. data/binscripts/rvm-auto-ruby +0 -24
  8. data/binscripts/rvm-prompt +0 -208
  9. data/binscripts/rvm-shell +0 -35
  10. data/binscripts/rvm-update-head +0 -58
  11. data/binscripts/rvm-update-latest +0 -27
  12. data/binscripts/rvmsudo +0 -20
  13. data/config/db +0 -71
  14. data/config/known +0 -54
  15. data/config/md5 +0 -139
  16. data/contrib/gemset_snapshot +0 -25
  17. data/contrib/install-system-wide +0 -221
  18. data/contrib/r +0 -44
  19. data/examples/rvmrc +0 -49
  20. data/gemsets/default.gems +0 -1
  21. data/gemsets/global.gems +0 -1
  22. data/help/alias +0 -46
  23. data/help/benchmark +0 -17
  24. data/help/cleanup +0 -23
  25. data/help/debug +0 -8
  26. data/help/disk-usage +0 -15
  27. data/help/docs +0 -22
  28. data/help/exec +0 -33
  29. data/help/fetch +0 -5
  30. data/help/gem +0 -0
  31. data/help/gemdir +0 -0
  32. data/help/gemset +0 -14
  33. data/help/implode +0 -0
  34. data/help/info +0 -62
  35. data/help/install +0 -0
  36. data/help/list +0 -0
  37. data/help/migrate +0 -15
  38. data/help/monitor +0 -0
  39. data/help/notes +0 -0
  40. data/help/package +0 -0
  41. data/help/rake +0 -14
  42. data/help/remove +0 -0
  43. data/help/repair +0 -23
  44. data/help/reset +0 -0
  45. data/help/ruby +0 -84
  46. data/help/rubygems +0 -11
  47. data/help/rvmrc +0 -34
  48. data/help/snapshot +0 -15
  49. data/help/specs +0 -0
  50. data/help/srcdir +0 -0
  51. data/help/tests +0 -0
  52. data/help/tools +0 -22
  53. data/help/uninstall +0 -0
  54. data/help/update +0 -0
  55. data/help/upgrade +0 -18
  56. data/help/use +0 -0
  57. data/help/wrapper +0 -41
  58. data/install +0 -667
  59. data/man/man1/rvm.1 +0 -380
  60. data/man/man1/rvm.1.gz +0 -0
  61. data/scripts/alias +0 -226
  62. data/scripts/aliases +0 -4
  63. data/scripts/array +0 -32
  64. data/scripts/base +0 -57
  65. data/scripts/cd +0 -94
  66. data/scripts/cleanup +0 -58
  67. data/scripts/cli +0 -798
  68. data/scripts/color +0 -49
  69. data/scripts/completion +0 -151
  70. data/scripts/db +0 -87
  71. data/scripts/default +0 -64
  72. data/scripts/disk-usage +0 -60
  73. data/scripts/docs +0 -115
  74. data/scripts/env +0 -46
  75. data/scripts/environment-convertor +0 -74
  76. data/scripts/fetch +0 -231
  77. data/scripts/gemsets +0 -1045
  78. data/scripts/get +0 -126
  79. data/scripts/hash +0 -37
  80. data/scripts/help +0 -46
  81. data/scripts/hook +0 -23
  82. data/scripts/info +0 -213
  83. data/scripts/initialize +0 -29
  84. data/scripts/install +0 -667
  85. data/scripts/irbrc +0 -13
  86. data/scripts/irbrc.rb +0 -64
  87. data/scripts/list +0 -315
  88. data/scripts/log +0 -38
  89. data/scripts/maglev +0 -193
  90. data/scripts/manage +0 -2157
  91. data/scripts/match +0 -6
  92. data/scripts/md5 +0 -22
  93. data/scripts/migrate +0 -175
  94. data/scripts/monitor +0 -105
  95. data/scripts/notes +0 -140
  96. data/scripts/override_gem +0 -14
  97. data/scripts/package +0 -302
  98. data/scripts/patches +0 -64
  99. data/scripts/patchsets +0 -87
  100. data/scripts/repair +0 -199
  101. data/scripts/rubygems +0 -157
  102. data/scripts/rvm +0 -128
  103. data/scripts/rvm-install +0 -667
  104. data/scripts/selector +0 -904
  105. data/scripts/set +0 -301
  106. data/scripts/snapshot +0 -262
  107. data/scripts/tools +0 -58
  108. data/scripts/update +0 -667
  109. data/scripts/upgrade +0 -144
  110. data/scripts/utility +0 -1499
  111. data/scripts/version +0 -17
  112. data/scripts/wrapper +0 -210
@@ -1,144 +0,0 @@
1
- #!/usr/bin/env bash
2
-
3
- unset GREP_OPTIONS
4
- source "$rvm_path/scripts/base"
5
-
6
- usage()
7
- {
8
- printf "
9
-
10
- Usage:
11
-
12
- rvm upgrade [new ruby] [existing ruby]
13
-
14
- Description:
15
-
16
- Upgrades the latest installed ruby with a given ruby string
17
- (e.g. ree) to the latest known version or the version specified
18
-
19
- "
20
- }
21
-
22
- confirm()
23
- {
24
-
25
- local confirmation_response
26
-
27
- printf "$1 (Y/n): "
28
-
29
- read -r confirmation_response
30
-
31
- if [[ -n "$confirmation_response" ]] ; then
32
- echo $confirmation_response | \grep -qi '^y\|^Y'
33
- fi
34
- }
35
-
36
- die_with_error()
37
- {
38
- "$rvm_path/scripts/log" "fail" "$1"
39
- exit "${2:-1}"
40
- }
41
-
42
- expand_ruby_name()
43
- {
44
- "$rvm_path/scripts/tools" strings "$1" \
45
- | awk -F"${rvm_gemset_separator:-"@"}" '{print $1}'
46
- }
47
-
48
- expand_existing_ruby()
49
- {
50
- local prefix ruby_name
51
-
52
- prefix="$(expand_ruby_name "$1" | awk -F'-' '{print $1"-"$2}')"
53
-
54
- while read -r ruby_name; do
55
-
56
- if [[ "$ruby_name" != "$expanded_destination"* ]]; then
57
- echo "$ruby_name" ; return 0
58
- fi
59
-
60
- done < <("$rvm_path/scripts/list" strings | tr ' ' '\n' \
61
- | sort -ur | \grep "^$prefix" | \grep -v '-head$' | head -n1)
62
-
63
- return 1
64
- }
65
-
66
- upgrade_ruby()
67
- {
68
-
69
- if [[ -z "$source_ruby" ]] ; then
70
- die_with_error "Unable to find a source ruby. Please manually provide one."
71
- fi
72
-
73
- expanded_source="$(expand_ruby_name "$source_ruby")"
74
-
75
- if [[ -z "$expanded_source" ]] ; then
76
- die_with_error "The source ruby was not a valid ruby string."
77
- fi
78
-
79
- if ! confirm "Are you sure you wish to upgrade from $expanded_source to \
80
- $expanded_destination?" ; then
81
- die_with_error "Cancelling upgrade."
82
- fi
83
-
84
- if [[ ! -d "$rvm_path/rubies/$expanded_destination" ]]; then
85
-
86
- "$rvm_path/scripts/log" "info" \
87
- "Installing new ruby $expanded_destination"
88
-
89
- "${rvm_bin_path:-"$rvm_path/bin"}/rvm" install "$expanded_destination"
90
-
91
- result="$?"
92
-
93
- if [[ "$result" -gt 0 ]] ; then
94
- die_with_error "Unable to install ruby $expanded_destination. \
95
- Please install it manually to continue." "$result"
96
- fi
97
-
98
- fi
99
-
100
- "$rvm_path/scripts/log" "info" \
101
- "Migrating gems from $expanded_source to $expanded_destination"
102
-
103
- "$rvm_path/scripts/migrate" "$expanded_source" "$expanded_destination"
104
- result="$?"
105
-
106
- [[ "$result" -gt 0 ]] && die_with_error "Error migrating gems." "$result"
107
-
108
- "$rvm_path/scripts/log" "info" "Upgrade complete!"
109
- }
110
-
111
- args=($*)
112
- destination_ruby="${args[$__array_start]}"
113
- args[$__array_start]=""
114
- args=(${args[@]})
115
-
116
- source_ruby="${args[$__array_start]:-"$(expand_existing_ruby "$destination_ruby")"}"
117
- args[$__array_start]=""
118
- args=(${args[@]})
119
-
120
- if [[ -z "${source_ruby:-""}" ]] ; then
121
- usage >&2
122
- exit 1
123
- fi
124
-
125
- if [[ "help" = "$source_ruby" ]] ; then
126
- usage
127
- exit 0
128
- fi
129
-
130
- expanded_destination="$(expand_ruby_name "$destination_ruby")"
131
-
132
- if [[ -z "$source_ruby" ]] ; then
133
- die_with_error \
134
- "Source ruby was either not a recognized ruby string or not installed."
135
- fi
136
-
137
- if [[ -z "$expanded_destination" ]] ; then
138
- die_with_error \
139
- "Destination ruby is not a known ruby string."
140
- fi
141
-
142
- upgrade_ruby
143
-
144
- exit $?
@@ -1,1499 +0,0 @@
1
- #!/usr/bin/env bash
2
-
3
- __rvm_setup()
4
- {
5
- # ZSH has 1 based array indexing, bash has 0 based.
6
- if [[ -n "${ZSH_VERSION:-""}" ]] ; then
7
- __shell_array_start=1
8
- # Set clobber for zsh users, for compatibility with bash's append operator ( >> file ) behavior
9
- setopt | \grep -qs '^noclobber$'
10
- rvm_zsh_clobber=$?
11
- setopt clobber
12
- else
13
- __shell_array_start=0 # bash array indexes are 0 based.
14
- fi ; export __shell_array_start
15
- }
16
-
17
- __rvm_teardown()
18
- {
19
- if [[ -n "${ZSH_VERSION:-""}" ]] ; then
20
-
21
- if [[ ${rvm_zsh_clobber:-0} -eq 0 ]] ; then
22
-
23
- setopt noclobber
24
-
25
- fi
26
-
27
- unset rvm_zsh_clobber
28
-
29
- else
30
- : # currently we are not doing any option setting for bash.
31
- fi
32
- # Ruby strings are scoped to their action.
33
- # Hence, we ensure we remove them at in
34
- # the cleanup phase.
35
-
36
- # Clean up after CC switch
37
- if [[ ${rvm_clang_flag:-0} -gt 0 ]] ; then
38
-
39
- if [[ -n "${rvm_prior_cc:-""}" ]] ; then
40
-
41
- export CC="$rvm_prior_cc"
42
-
43
- else
44
-
45
- unset CC
46
-
47
- fi
48
-
49
- fi
50
-
51
- unset rvm_ruby_strings rvm_head_flag rvm_prior_cc next_token rvm_bin_path rvm_error_message rvm_gems_cache_path rvm_gems_path rvm_gemset_name rvm_interactive_flag rvm_man_path rvm_parse_break rvm_rc_files rvm_ruby_binary rvm_ruby_gem_home rvm_ruby_gem_path rvm_ruby_home rvm_ruby_interpreter rvm_ruby_irbrc rvm_ruby_log_path rvm_ruby_major_version rvm_ruby_minor_version rvm_ruby_package_name rvm_ruby_patch_level rvm_ruby_release_version rvm_ruby_repo_url rvm_ruby_repo_branch rvm_ruby_revision rvm_ruby_selected_flag rvm_ruby_tag rvm_ruby_version rvm_selfcontained rvm_token rvm_ruby_load_path rvm_path_flag rvm_ruby_require rvm_action rvm_ruby_package_file rvm_ruby_name
52
-
53
- [[ ${rvm_dump_environment_flag:-0} -eq 1 ]] && __rvm_dump_environment
54
-
55
- return 0
56
- }
57
-
58
- # Dump the current environment to a file.
59
- __rvm_dump_environment()
60
- {
61
- # Note: This assumes that there is a ','
62
- local dump_environment_file dump_environment_type rvm_dump_environment_flag
63
-
64
- dump_environment_file="${rvm_dump_environment_flag/,*/}"
65
-
66
- dump_environment_type="${rvm_dump_environment_flag/*,/}"
67
-
68
- if [[ -n "$dump_environment_file" && -n "$dump_environment_type" ]]; then
69
-
70
- if [[ "$dump_environment_type" == "atheis"* && -f "$dump_environment_file" ]] ; then
71
- # TODO: Query Darcy about the ln.
72
- \rm -f "$dump_environment_file" \
73
- && ln -s /dev/null "$dump_environment_file" >/dev/null 2>&1
74
-
75
- else
76
- "$rvm_path/scripts/environment-convertor" "$dump_environment_type" \
77
- "$(__rvm_environment_identifier)" > "$dump_environment_file"
78
- if [[ "$?" -gt 0 && -f "$dump_environment_file" ]] ; then
79
- \rm -f "$dump_environment_file"
80
- fi
81
- fi
82
- fi
83
-
84
- return 0
85
- }
86
-
87
- # Return a list of directories under a given base path.
88
- # Derived from rvm_ruby_string.
89
- __rvm_ruby_string_paths_under()
90
- {
91
- local path part parts
92
-
93
- path="${1%/}" # Strip off any trailing slash
94
-
95
- parts=(${rvm_ruby_string//-/ }) # Strip white space.
96
-
97
- echo "$path"
98
-
99
- for part in "${parts[@]}" ; do
100
-
101
- path="$path/$part"
102
-
103
- echo "$path"
104
-
105
- done
106
-
107
- return 0
108
- }
109
-
110
- # Query the rvm key-value database for a specific key
111
- # Allow overrides from user specifications in $rvm_path/config/user
112
- __rvm_db()
113
- {
114
- local value key variable
115
-
116
- key=${1:-""}
117
- variable=${2:-""}
118
-
119
- if [[ -f "$rvm_path/config/user" ]] ; then
120
- value="$("$rvm_path/scripts/db" "$rvm_path/config/user" "$key")"
121
- fi
122
-
123
- if [[ -z "$value" ]] ; then
124
- value="$("$rvm_path/scripts/db" "$rvm_path/config/db" "$key")"
125
- fi
126
-
127
- if [[ -n "$value" ]] ; then
128
- if [[ -z "$variable" ]] ; then
129
- echo $value
130
- else
131
- eval "$variable='$value'"
132
- fi
133
- fi
134
-
135
- return 0
136
- }
137
-
138
- is_a_function() { type $1 | head -n 1 | \grep -q "function" ; }
139
-
140
- __rvm_quote_args()
141
- {
142
- local quoted_string=""
143
-
144
- for quoted_argument in "$@"; do
145
-
146
- if printf "%s" "$quoted_argument" | \grep -vq "^[[:alnum:]]$"; then
147
-
148
- quoted_string="$quoted_string '$(printf "%s" "$quoted_argument" \
149
- | sed "s/'/\'\\\'\'/g")'"
150
-
151
- else
152
- quoted_string="$quoted_string $quoted_argument"
153
- fi
154
- done
155
-
156
- echo "$quoted_string" | sed -e 's/^ *//g' -e 's/ *$//g'
157
-
158
- return 0
159
- }
160
-
161
- __rvm_quote_args_with_shift()
162
- {
163
- local shift_value="$1"; shift
164
-
165
- while [[ "$shift_value" -gt 0 && $# -gt 0 ]]; do
166
-
167
- shift
168
-
169
- ((shift_value--))
170
-
171
- done
172
-
173
- __rvm_quote_args "$@"
174
-
175
- return 0
176
- }
177
-
178
- __rvm_warn_on_rubyopt()
179
- {
180
- if [[ -n "${RUBYOPT:-""}" ]]; then
181
- "$rvm_path/scripts"/log "warn" \
182
- "Please note: You have the RUBYOPT environment variable set and this \
183
- may interfere with normal rvm operations. We sugges unsetting it."
184
- return 1
185
- else
186
- return 0
187
- fi
188
- }
189
-
190
- __rvm_strings()
191
- {
192
- local strings ruby_strings
193
-
194
- ruby_strings=($(echo ${rvm_ruby_args:-$rvm_ruby_string}))
195
-
196
- for rvm_ruby_string in "${ruby_strings[@]}" ; do
197
- strings="$strings $(__rvm_select ; echo $rvm_ruby_string)"
198
- done
199
-
200
- echo $strings
201
-
202
- return 0
203
- }
204
-
205
- # Push an item onto a given array.
206
- __rvm_push()
207
- {
208
- local array item
209
-
210
- array=$1 ; shift ; item=$2
211
-
212
- # TODO: allow loop over more arguments.
213
- eval "index=\$((\${#${array}[*]} + $__shell_array_start))"
214
-
215
- eval "${array}[${index}]=${item}"
216
-
217
- return 0
218
- }
219
-
220
- # Clean all *duplicate* items out of the path. (keep first occurrence of each)
221
- __rvm_clean_path()
222
- {
223
- PATH="$(printf "$PATH" | \tr -s ':' '\n' | awk '!($0 in a){a[$0];print}' \
224
- | \tr -s '\n' ':' | sed 's#:$##')"
225
-
226
- export PATH
227
-
228
- builtin hash -r
229
- }
230
-
231
- # Clean all rvm items out of the current working path.
232
- __rvm_remove_rvm_from_path()
233
- {
234
- PATH="$(printf "$PATH" \
235
- | awk -v RS=: -v ORS=: "/${rvm_path//\//\/}/ {next} {print}" \
236
- | sed -e 's#:$##')"
237
-
238
- export PATH
239
-
240
- builtin hash -r
241
- }
242
-
243
- # Run a specified command and log it.
244
- __rvm_run()
245
- {
246
- local name log temp_log_path command message
247
-
248
- name="${1:-""}"
249
- command="${2:-""}"
250
- message="${3:-""}"
251
-
252
- if [[ -n "$message" ]] ; then
253
- "$rvm_path/scripts/log" "info" "$message"
254
- fi
255
-
256
- if [[ ${rvm_debug_flag:-0} -gt 0 ]] ; then
257
- "$rvm_path/scripts/log" "debug" "Executing: $command"
258
- fi
259
-
260
- if [[ -n "${rvm_ruby_string:-""}" ]] ; then
261
- temp_log_path="${rvm_log_path:-"$rvm_path/log"}/$rvm_ruby_string"
262
- else
263
- temp_log_path="${rvm_log_path:-"$rvm_path/log"}"
264
- fi
265
-
266
- log="$temp_log_path/$name.log"
267
-
268
- if [[ ! -d "${log%\/*}" ]] ; then
269
- \mkdir -p "${log%\/*}"
270
- fi
271
-
272
- \touch "$log" # for zsh :(
273
-
274
- printf "[$(date +'%Y-%m-%d %H:%M:%S')] $command\n" > "$log"
275
-
276
- if [[ ${rvm_niceness:-0} -gt 0 ]] ; then
277
- command="nice -n $rvm_niceness $command"
278
- fi
279
-
280
- eval "$command" >> "$log" 2>&1
281
-
282
- result=$?
283
-
284
- if [[ $result -gt 0 ]] ; then
285
- "$rvm_path/scripts/log" "error" \
286
- "Error running '$command', please read $log"
287
- fi
288
-
289
- return ${result:-0}
290
- }
291
-
292
- # Runs a command in a given env.
293
- __rvm_run_with_env()
294
- {
295
- local name environment command message log path
296
-
297
- name="${1:-""}"
298
- environment="${2:-""}"
299
- command="${3:-""}"
300
- message="${4:-""}"
301
-
302
- if [[ -z "$environment" ]] ; then
303
- environment="$(__rvm_environment_identifier)"
304
- fi
305
-
306
- if [[ -n "$message" ]] ; then
307
- "$rvm_path/scripts/log" "info" "$message"
308
- fi
309
-
310
- if [[ ${rvm_debug_flag:-0} -gt 0 ]] ; then
311
- "$rvm_path/scripts/log" "debug" \
312
- "Executing: $command in environment $environment"
313
- fi
314
-
315
- path="${rvm_log_path:-"$rvm_path/log"}/$rvm_ruby_string"
316
-
317
- log="$path/$name.log"
318
-
319
- if [[ ! -d "$path" ]] ; then
320
- \mkdir -p "$path"
321
- fi
322
-
323
- \touch "$log" # for zsh :(
324
-
325
- printf "[$(date +'%Y-%m-%d %H:%M:%S')] $command # under $environment\n" > "${log}"
326
-
327
- if [[ ${rvm_niceness:-0} -gt 0 ]] ; then
328
- command="nice -n $rvm_niceness $command"
329
- fi
330
-
331
- (
332
- rvm_ruby_string="$environment"
333
-
334
- __rvm_use
335
-
336
- eval "$command" >> "${log}" 2>&1
337
- )
338
-
339
- result=$?
340
-
341
- if [[ $result -gt 0 ]] ; then
342
- "$rvm_path/scripts/log" "error" \
343
- "Error running '$command' under $env_name,\nplease read $log"
344
- fi
345
-
346
- return ${result:-0}
347
- }
348
-
349
- __rvm_nuke_rvm_variables()
350
- {
351
- unset rvm_head_flag $(env | awk -F= '/^rvm_/{print $1" "}')
352
- }
353
-
354
- # Unset ruby-specific variables
355
- __rvm_unset_ruby_variables()
356
- {
357
- # unset rvm_ruby_flag $(env | awk -F= '/^rvm_ruby_/{printf $1" "}')
358
- unset rvm_ruby_string rvm_ruby_strings rvm_ruby_binary rvm_ruby_gem_home rvm_ruby_gem_path rvm_ruby_home rvm_ruby_interpreter rvm_ruby_irbrc rvm_ruby_log_path rvm_ruby_major_version rvm_ruby_minor_version rvm_ruby_package_name rvm_ruby_patch_level rvm_ruby_release_version rvm_ruby_repo_url rvm_ruby_repo_branch rvm_ruby_revision rvm_ruby_selected_flag rvm_ruby_tag rvm_ruby_version rvm_ruby_load_path rvm_ruby_require rvm_head_flag rvm_ruby_package_file rvm_ruby_configure rvm_ruby_name
359
- }
360
-
361
- # TODO: Should be able to...
362
- # Unset both rvm variables as well as ruby-specific variables
363
- # Preserve gemset if 'rvm_sticky' is set
364
- # (persist gemset unless clear is explicitely called).
365
- __rvm_cleanse_variables()
366
- {
367
- __rvm_unset_ruby_variables
368
-
369
- if [[ ${rvm_sticky_flag:-0} -eq 1 ]] ; then
370
- export rvm_gemset_name
371
- else
372
- unset rvm_gemset_name
373
- fi
374
-
375
- unset rvm_ruby_string rvm_action rvm_irbrc_file rvm_command rvm_error_message 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_configure_flags rvm_uninstall_flag rvm_install_flag rvm_llvm_flag rvm_ruby_bits rvm_sticky_flag rvm_rvmrc_flag rvm_gems_flag rvm_only_path_flag rvm_docs_flag rvm_ruby_aliases rvm_patch_names rvm_clang_flag rvm_install_arguments rvm_dump_environment_flag rvm_ruby_alias
376
- }
377
-
378
- # Returns the first 1.8.7-compatible (partly) ruby for use
379
- # with things like rbx etc which require a ruby be installed.
380
- __rvm_18_compat_ruby()
381
- {
382
- local rubies ruby_name
383
-
384
- rubies=($( cd "$rvm_path/rubies" ; find . -maxdepth 1 -mindepth 1 -type d ))
385
-
386
- for ruby_name in "${rubies[@]//.\/}"; do
387
-
388
- if [[ ! -L "$rvm_path/rubies/$ruby_name" ]] ; then
389
-
390
- case $ruby_name in
391
- *1.8.*|rbx-*|ree-*) rubies="$rubies $ruby_name" ;;
392
- esac
393
- fi
394
- done
395
-
396
- echo $rubies | \tr ' ' '\n' | \sort | \tail -n1
397
-
398
- return 0
399
- }
400
-
401
- __rvm_ensure_has_18_compat_ruby()
402
- {
403
- if [[ -z "$(__rvm_18_compat_ruby)" ]]; then
404
- # TODO: install currently doesn't return the correct status.
405
- local compat_result=0
406
-
407
- if ! ( "$rvm_path/scripts/manage" install 1.8.7 ); then
408
-
409
- "$rvm_path/scripts/log" "fail" \
410
- "To proceed rvm requires a 1.8-compatible ruby is installed.\
411
- \nWe attempted to install 1.8.7 automatically but it failed.\
412
- \nPlease install it manually (or a compatible alternative) to proceed."
413
-
414
- compat_result=1
415
-
416
- fi
417
- # unset original_ruby
418
- # Question: Why *were* we unsetting original_ruby here
419
- return $compat_result
420
- fi
421
-
422
- return 0
423
- }
424
-
425
- # Cleans up temp folders for a given prefix ($1),
426
- # typically the current process id.
427
- __rvm_cleanup_temp_for()
428
- {
429
- result=$? # Capture last command status
430
-
431
- [[ -z "${1:-""}" ]] && return 1
432
-
433
- if [[ -d "${rvm_tmp_path:-"$rvm_path/tmp"}/" ]]; then
434
-
435
- \rm -rf "${rvm_tmp_path:-"$rvm_path/tmp"}/$1"* >/dev/null 2>&1
436
-
437
- fi
438
-
439
- return $result
440
- }
441
-
442
- __rvm_set_rvmrc()
443
- {
444
- local flags
445
-
446
- if [[ "$HOME" != "$PWD" ]] ; then
447
-
448
- if [[ ${rvm_verbose_flag:-0} -gt 0 ]] ; then
449
- flags="use "
450
- fi
451
-
452
- if [[ -s .rvmrc ]] ; then
453
-
454
- mv .rvmrc .rvmrc.$(date +%m.%d.%Y-%H:%M:%S)
455
-
456
- "$rvm_path/scripts/log" "warning" \
457
- ".rvmrc is not empty, moving aside to preserve."
458
-
459
- fi
460
-
461
- local identifier=$(__rvm_environment_identifier)
462
-
463
- printf "
464
- if [[ -d \"\${rvm_path:-\$HOME/.rvm}/environments\" \\
465
- && -s \"\${rvm_path:-\$HOME/.rvm}/environments/$identifier\" ]] ; then
466
- \\. \"\${rvm_path:-\$HOME/.rvm}/environments/$identifier\"
467
- else
468
- rvm --create $flags \"$identifier\"
469
- fi
470
- " >> .rvmrc
471
-
472
- else
473
- "$rvm_path/scripts/log" "error" \
474
- ".rvmrc cannot be set in your home directory.\
475
- \nThe home .rvmrc is for global rvm settings only."
476
- fi
477
- }
478
-
479
- __rvm_load_rvmrc()
480
- {
481
- [[ ${rvm_ignore_rvmrc:-0} -eq 1 ]] && return 0
482
-
483
- for rvmrc in /etc/rvmrc $HOME/.rvmrc ; do
484
-
485
- if [[ -f "$rvmrc" ]] ; then
486
-
487
- if \grep -q '^\s*rvm .*$' $rvmrc ; then
488
-
489
- "$rvm_path/scripts/log" "error" \
490
- "$rvmrc is for rvm settings only.\
491
- \nrvm CLI may NOT be called from within $rvmrc.\
492
- \nSkipping the loading of $rvmrc"
493
-
494
- return 1
495
-
496
- else
497
-
498
- source "$rvmrc"
499
-
500
- fi
501
-
502
- fi
503
-
504
- done
505
-
506
- return 0
507
- }
508
-
509
- # Wrap the specified ruby code file in a Benchmark.bmbm block and execute it.
510
- __rvm_benchmark()
511
- {
512
- local old_rvm_ruby_string
513
-
514
- code="require \"benchmark\" \n \
515
- Benchmark.bmbm do |benchmark| \n \
516
- benchmark.report(\"${rvm_ruby_file}\") do \n"
517
-
518
- printf "\n$code" > "${rvm_tmp_path:-"$rvm_path/tmp"}/$$.rb"
519
-
520
- unset code
521
-
522
- cat $rvm_ruby_file >> "${rvm_tmp_path:-"$rvm_path/tmp"}/$$.rb"
523
-
524
- printf "\n end \nend\n" >> "${rvm_tmp_path:-"$rvm_path/tmp"}/$$.rb"
525
-
526
- rvm_ruby_args="${rvm_tmp_path:-"$rvm_path/tmp"}/$$.rb"
527
-
528
- rvm_benchmark_flag=1
529
-
530
- rvm_action="ruby"
531
-
532
- if [[ ${rvm_debug_flag:0} -gt 0 ]] ; then
533
-
534
- printf "\n${rvm_tmp_path:-"$rvm_path/tmp"}/$$.rb:\n\
535
- $(cat ${rvm_tmp_path:-"$rvm_path/tmp"}/$$.rb)"
536
-
537
- fi
538
-
539
- # Override ruby string stuff, pass through.
540
-
541
- old_rvm_ruby_string=$rvm_ruby_string
542
-
543
- # TODO: We can likely do this in a subshell in order to
544
- # preserve the original environment?
545
-
546
- unset rvm_ruby_string
547
-
548
- export rvm_ruby_strings
549
-
550
- "$rvm_path/scripts/set" "$rvm_action" $rvm_ruby_args ; result=$?
551
-
552
- # Restore the state pre-sets.
553
- [[ -n "$old_rvm_ruby_string" ]] && rvm_ruby_string=$old_rvm_ruby_string
554
-
555
- return ${result:-0}
556
- }
557
-
558
- # Loop over the currently installed rubies and refresh their binscripts.
559
- __rvm_bin_scripts()
560
- {
561
- for rvm_ruby_binary in "$rvm_path/rubies"/*/bin/ruby ; do
562
-
563
- if [[ -x "$rvm_ruby_binary" ]] ; then
564
-
565
- rvm_ruby_string=$(dirname "$rvm_ruby_binary" \
566
- | xargs dirname | xargs basename)
567
-
568
- __rvm_select
569
-
570
- __rvm_bin_script
571
-
572
- fi
573
-
574
- done
575
-
576
- return 0
577
- }
578
-
579
- # Write the bin/ wrapper script for currently selected ruby.
580
- # TODO: Adjust binscript to be able to handle all rubies,
581
- # not just the standard interpreteres.
582
- __rvm_bin_script()
583
- {
584
- "$rvm_path/scripts/wrapper" "$rvm_ruby_string"
585
-
586
- return $?
587
- }
588
-
589
- # Add bin path if not present
590
- __rvm_conditionally_add_bin_path()
591
- {
592
- if printf "${PATH//:/ }" | \grep -vqF "${rvm_bin_path:-"$rvm_path/bin"} " ; then
593
-
594
- case "${rvm_ruby_string:-"system"}" in
595
- system)
596
- PATH="$PATH:${rvm_bin_path:-"$rvm_path/bin"}"
597
- ;;
598
- *)
599
- PATH="${rvm_bin_path:-"$rvm_path/bin"}:$PATH"
600
- ;;
601
- esac
602
-
603
- builtin hash -r
604
- fi
605
-
606
- return 0
607
- }
608
-
609
- # Reset any rvm gathered information about the system and its state.
610
- # rvm will refresh the stored information the next time it is called after reset.
611
- __rvm_reset()
612
- {
613
- local flag flags file files config configs variable
614
-
615
- __rvm_remove_rvm_from_path ; __rvm_conditionally_add_bin_path
616
-
617
- export PATH
618
-
619
- builtin hash -r
620
-
621
- flags=( default passenger editor )
622
-
623
- for flag in "${flags[@]}"; do
624
-
625
- \rm -f "${rvm_bin_path:-"$rvm_path/bin"}"/${flag}_*
626
-
627
- done
628
-
629
- for file in system default ; do
630
-
631
- if [[ -f "$rvm_path/${file}" ]] ; then
632
- \rm -f "$rvm_path/${file}"
633
- fi
634
-
635
- if [[ -f "$rvm_path/config/${file}" ]] ; then
636
- \rm -f "$rvm_path/config/${file}"
637
- fi
638
-
639
- if [[ -f "$rvm_path/environments/${file}" ]] ; then
640
- \rm -f "$rvm_path/environments/${file}"
641
- fi
642
-
643
- done
644
-
645
- # Go back to a clean state.
646
- __rvm_use_system
647
-
648
- __rvm_unset_ruby_variables
649
-
650
- configs=(system_ruby system_gem_path system_user_gem_path)
651
-
652
- for system_config in "${configs[@]}" ; do
653
-
654
- "$rvm_path/scripts/db" "$rvm_path/config/user" "$system_config" "delete"
655
-
656
- done
657
-
658
- files=(ruby gem rake irb $(cd "${rvm_bin_path:-"$rvm_path/bin"}" ; \
659
- find . -mindepth 1 -maxdepth 1 -iname 'default*' -type f \
660
- | sed -e 's#./##g'))
661
-
662
- for file in "${files[@]}"; do
663
-
664
- if [[ -f "${rvm_bin_path:-"$rvm_path/bin"}/$file" ]] ; then
665
-
666
- \rm -f "${rvm_bin_path:-"$rvm_path/bin"}/$file"
667
-
668
- fi
669
-
670
- done
671
-
672
- return 0
673
- }
674
-
675
- # Implode removes the entire rvm installation under $rvm_path.
676
- __rvm_implode()
677
- {
678
- while : ; do
679
-
680
- "$rvm_path/scripts/log" "warn" \
681
- "Are you SURE you wish for rvm to implode?\
682
- \nThis will recursively remove $rvm_path ?\
683
- \n(type 'yes' or 'no')> "
684
-
685
- read response
686
-
687
- if [[ "yes" = "$response" ]] ; then
688
-
689
- if [[ "/" = "$rvm_path" ]] ; then
690
-
691
- "$rvm_path/scripts/log" "error" \
692
- "remove '/' ?!... Ni!"
693
-
694
- else
695
-
696
- if [[ -d "$rvm_path" ]] ; then
697
-
698
- "$rvm_path/scripts/log" "info" \
699
- "Hai! Removing $rvm_path"
700
-
701
- \rm -rf "$rvm_path/"
702
-
703
- echo "$rvm_path has been removed."
704
-
705
- else
706
-
707
- "$rvm_path/scripts/log" "info" \
708
- "It appears that $rvm_path is already non existant."
709
-
710
- fi
711
- fi
712
- break
713
-
714
- elif [[ "no" = "$response" ]] ; then
715
-
716
- "$rvm_path/scripts/log" "info" \
717
- "Cancelling implosion, no harm done :)"
718
- break
719
-
720
- fi
721
- done
722
-
723
- return 0
724
- }
725
-
726
- # Output the current ruby's rvm source path.
727
- __rvm_source_dir()
728
- {
729
- if [[ ${rvm_ruby_selected_flag:-0} -eq 0 ]] ; then __rvm_select ; fi
730
-
731
- if [[ -z "$rvm_ruby_src_path" ]] ; then
732
-
733
- "$rvm_path/scripts/log" "fail" \
734
- "No source directory exists for the default implementation."
735
-
736
- else
737
-
738
- echo "$rvm_ruby_src_path"
739
-
740
- fi
741
-
742
- return 0
743
- }
744
-
745
- # Initialize rvm, ensuring that the path and directories are as expected.
746
- __rvm_initialize()
747
- {
748
- rvm_ruby_load_path="."
749
- rvm_ruby_require=""
750
-
751
- __rvm_clean_path ; __rvm_conditionally_add_bin_path ; export PATH
752
-
753
- if [[ ! -d "${rvm_tmp_path:-"$rvm_path/tmp"}" ]] ; then
754
- \mkdir -p "${rvm_tmp_path:-"$rvm_path/tmp"}"
755
- fi
756
-
757
- return 0
758
- }
759
-
760
- # Update rubygems or binscripts based on CLI selection.
761
- __rvm_update()
762
- {
763
- (
764
- builtin cd "$rvm_path"
765
-
766
- # TODO:
767
- if [[ ${rvm_head_flag:-0} -eq 1 || ${rvm_self_flag:-0} -eq 1 \
768
- || "update" = "${rvm_action:-""}" || ${rvm_update_flag:-0} -eq 1 ]] ; then
769
- "$rvm_path/scripts/log" "warn" \
770
- "'rvm update --head' is deprecated, use 'rvm get head' instead"
771
- "$rvm_path/scripts/get" head
772
- fi
773
-
774
- if [[ ${rvm_bin_flag:-0} -eq 1 ]] ; then
775
- __rvm_bin_scripts
776
- fi
777
-
778
- # Update to the latest rubygems.
779
- if [[ ${rvm_rubygems_flag:-0} -eq 1 ]] ; then
780
- "$rvm_path/scripts/rubygems" current
781
- fi
782
- )
783
- unset rvm_update_flag rvm_action rvm_self_flag \
784
- rvm_ruby_revision rvm_bin_flag rvm_rubygems_flag
785
-
786
- return 0
787
- }
788
-
789
- __rvm_reboot()
790
- {
791
- "$rvm_path/scripts/log" "warn" \
792
- "Do you wish to reboot rvm?\
793
- \n('yes', or 'no')> "
794
-
795
- local response="no"
796
-
797
- read response
798
-
799
- if [[ "yes" = "$response" ]] ; then
800
- builtin cd $rvm_path
801
-
802
- __rvm_reset
803
-
804
- mv "$rvm_path/archives" "$HOME/.archives"
805
-
806
- if [[ "/" = "$rvm_path" ]] ; then
807
- "$rvm_path/scripts/log" "error" "remove '/' ?!... NO!"
808
- else
809
- if [[ -d "$rvm_path" ]] ; then \rm -rf "$rvm_path/" ; fi
810
- fi
811
-
812
- gem install rvm $rvm_gem_options
813
-
814
- "$rvm_path/scripts/get" latest
815
-
816
- source "$rvm_path/scripts/rvm"
817
- else
818
- "$rvm_path/scripts/log" "info" "Carry on then..."
819
- fi
820
-
821
- return 0
822
- }
823
-
824
- # Create the irbrc for the currently selected ruby installation.
825
- __rvm_irbrc()
826
- {
827
- if [[ -d "$rvm_ruby_home" && ! -s "$rvm_ruby_irbrc" ]] ; then
828
- \cp "$rvm_path/scripts/irbrc" "$rvm_ruby_irbrc"
829
- fi
830
- return $?
831
- }
832
-
833
- # Save or restore the rvm's state. This is a toggle action.
834
- # Meant for use before and after an operation that might reset
835
- # the currently selected ruby.
836
- # TODO: Determine if we should a) yank this out or b) actually use it :)
837
- __rvm_state()
838
- {
839
- if [[ -z "$rvm_state" ]] ; then
840
-
841
- rvm_state="$(__rvm_environment_identifier)"
842
-
843
- rvm_state="${rvm_state:-"system"}"
844
-
845
- if [[ -n "$1" ]]; then
846
-
847
- rvm_ruby_string="$1"
848
-
849
- __rvm_select
850
-
851
- __rvm_use
852
-
853
- fi
854
-
855
- else
856
-
857
- rvm_ruby_string="$rvm_state"
858
-
859
- __rvm_select
860
-
861
- __rvm_use
862
-
863
- unset rvm_state
864
-
865
- fi
866
-
867
- return 0
868
- }
869
-
870
- # Output an inspection of selected 'binary' scripts, based on CLI selection.
871
- __rvm_inspect()
872
- {
873
- for binary in $rvm_ruby_args ; do
874
-
875
- actual_file="$(unset -f gem ; command -v gem )"
876
-
877
- "$rvm_path/scripts/log" "info" "$actual_file:"
878
-
879
- if [[ ${rvm_shebang_flag:-0} -eq 1 ]] ; then
880
- \head -n 1 < "$actual_file"
881
- fi
882
-
883
- if [[ ${rvm_env_flag:-0} -eq 1 ]] ; then
884
- \awk '/ENV/' < "$actual_file"
885
- fi
886
-
887
- if [[ ${rvm_path_flag:-0} -eq 1 ]] ; then
888
- \awk '/PATH/' < "$actual_file"
889
- fi
890
-
891
- if [[ ${rvm_head_flag:-0} -eq 1 ]] ; then
892
- \head -n 5 < "$actual_file"
893
- fi
894
-
895
- if [[ ${rvm_tail_flag:-0} -eq 1 ]] ; then
896
- \tail -n 5 < "$actual_file"
897
- fi
898
-
899
- if [[ ${rvm_all_flag:-0} -eq 1 ]] ; then
900
- \cat $actual_file
901
- fi
902
-
903
- done
904
-
905
- return 0
906
- }
907
-
908
- # Attempt to override the Darwin build settings for rubies
909
- # This should only be used in extreme edge cases that
910
- # will not work via the default way.
911
- __rvm_make_flags()
912
- {
913
- # This is only an issue with Darwin :/
914
- if [[ "Darwin" = "$(uname)" ]] ; then
915
- # \ls /usr/lib/gcc/x86_64-apple-darwin10
916
-
917
- # Set the build & host type
918
- if [[ "Power Macintosh" = "$(/usr/sbin/sysctl -n hw.machine)" ]] ; then
919
-
920
- : # Do nothing ?
921
-
922
- elif [[ "$(/usr/sbin/sysctl -n hw.cpu64bit_capable)" = 1 \
923
- || "$(/usr/sbin/sysctl -n hw.optional.x86_64)" = 1 ]] ; then
924
-
925
- # 64 bit capable
926
-
927
- if [[ "-arch x86_64" = "${rvm_archflags:-""}" ]] ; then
928
-
929
- rvm_configure_flags="${rvm_configure_flags} \
930
- --build=x86_64-apple-darwin$(uname -r) \
931
- --host=x86_64-apple-darwin$(uname -r)"
932
-
933
- elif [[ "-arch i386" = "${rvm_archflags:-""}" ]] ; then
934
-
935
- rvm_configure_flags="${rvm_configure_flags} \
936
- --build=i386-apple-darwin$(uname -r) \
937
- --host=i386-apple-darwin$(uname -r)"
938
-
939
- else
940
-
941
- rvm_archflags="-arch x86_64"
942
-
943
- rvm_configure_flags="${rvm_configure_flags} \
944
- --build=x86_64-apple-darwin$(uname -r) \
945
- --host=x86_64-apple-darwin$(uname -r)"
946
-
947
- fi
948
-
949
- fi
950
-
951
- if [[ -n "${rvm_archflags:-""}" ]] ; then
952
-
953
- ARCHFLAGS="$rvm_archflags" ; export ARCHFLAGS
954
-
955
- # Use the latest sdk available.
956
- if [[ -z "${rvm_sdk:-""}" ]] ; then
957
-
958
- rvm_sdk="$(/usr/bin/basename -a /Developer/SDKs/* \
959
- | awk '/^M/' | \sort | \tail -n 1)"
960
-
961
- fi
962
-
963
- CFLAGS="${CFLAGS:-"-isysroot /Developer/SDKs/$rvm_sdk $rvm_archflags"}"
964
-
965
- export CFLAGS
966
-
967
- LDFLAGS="${LDFLAGS:-"-Wl,-syslibroot /Developer/SDKs/$rvm_sdk $rvm_archflags"}"
968
-
969
- export LDFLAGS
970
-
971
- # CXXFLAGS="-mmacosx-version-min="$(sw_vers -productVersion \
972
- # | awk -F'.' '{print $1"."$2}')" -isysroot /Developer/SDKs/$rvm_sdk "
973
- # export CXXFLAGS
974
-
975
- fi
976
- fi
977
-
978
- return 0
979
- }
980
-
981
- __rvm_mono_env()
982
- {
983
- DYLD_LIBRARY_PATH="${rvm_usr_path:-"$rvm_path/usr"}/lib:$DYLD_LIBRARY_PATH"
984
- C_INCLUDE_PATH="${rvm_usr_path:-"$rvm_path/usr"}/include:$C_INCLUDE_PATH"
985
- ACLOCAL_PATH="${rvm_usr_path:-"$rvm_path/usr"}/share/aclocal"
986
- ACLOCAL_FLAGS="-I $ACLOCAL_PATH"
987
- PKG_CONFIG_PATH="${rvm_usr_path:-"$rvm_path/usr"}/lib/pkgconfig:$PKG_CONFIG_PATH"
988
-
989
- export DYLD_LIBRARY_PATH C_INCLUDE_PATH ACLOCAL_PATH ACLOCAL_FLAGS PKG_CONFIG_PATH
990
-
991
- PATH="${rvm_usr_path:-"$rvm_path/usr"}/bin:$PATH"
992
-
993
- builtin hash -r
994
-
995
- return 0
996
- }
997
-
998
- __rvm_become()
999
- {
1000
- local string="$1"
1001
-
1002
- [[ -n "$string" ]] && rvm_ruby_string="$string"
1003
-
1004
- { __rvm_ruby_string && __rvm_select && __rvm_use; } > /dev/null 2>&1
1005
-
1006
- return 0
1007
- }
1008
-
1009
- __rvm_ensure_has_environment_files()
1010
- {
1011
- local environment_id file_name directory identifier variable value variables
1012
-
1013
- environment_id="$(__rvm_environment_identifier)"
1014
-
1015
- file_name="${rvm_path}/environments/$environment_id"
1016
-
1017
- if [[ ! -s "$file_name" ]] ; then
1018
-
1019
- \mkdir -p "$rvm_path/environments"
1020
-
1021
- printf "export PATH=\"${rvm_ruby_gem_home}/bin:${rvm_ruby_global_gems_path}/bin:${rvm_ruby_home}/bin:${rvm_bin_path:-"$rvm_path/bin"}:\$PATH\"\n" \
1022
- > "$file_name"
1023
-
1024
- for variable in rvm_path RUBY_VERSION GEM_HOME GEM_PATH \
1025
- MY_RUBY_HOME IRBRC rvm_ruby_string rvm_gemset_name MAGLEV_HOME ; do
1026
-
1027
- eval "export $variable"
1028
- eval "value=\${${variable}:-""}"
1029
-
1030
- if [[ -n "$value" ]] ; then
1031
-
1032
- printf "${variable}='$value'\nexport ${variable}\n" \
1033
- >> "$file_name"
1034
-
1035
- else
1036
-
1037
- printf "unset ${variable}\n" \
1038
- >> "$file_name"
1039
-
1040
- fi
1041
-
1042
- done
1043
- fi
1044
-
1045
- # Next, ensure we have default wrapper files. Also, prevent it from recursing.
1046
- if [[ ${rvm_create_default_wrappers:-0} -eq 1 \
1047
- || ! -f "$rvm_path/wrappers/$environment_id/ruby" ]] ; then
1048
-
1049
- # We need to generate wrappers for both the default gemset and the global gemset.
1050
- for identifier in "$environment_id" "${environment_id//@*/}@global" ; do
1051
-
1052
- rvm_create_default_wrappers=1
1053
-
1054
- directory="$rvm_path/wrappers/$identifier"
1055
-
1056
- if [[ ! -L "$directory" && ! -d "$directory" ]]; then
1057
- \mkdir -p "$directory"
1058
-
1059
- "$rvm_path/scripts/wrapper" "$identifier" &> /dev/null
1060
- fi
1061
-
1062
- done
1063
-
1064
- rvm_create_default_wrappers=0
1065
- fi
1066
-
1067
- return 0
1068
- }
1069
-
1070
- # Strip whitespace and normalize it all.
1071
- __rvm_strip()
1072
- {
1073
- sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//' -e 's/[[:space:]]\{1,\}/ /g'
1074
- return $?
1075
- }
1076
-
1077
- __rvm_using_gemset_globalcache()
1078
- {
1079
- "$rvm_path/scripts/db" "$rvm_path/config/user" \
1080
- "use_gemset_globalcache" | \grep -q '^true$'
1081
- return $?
1082
- }
1083
-
1084
- __rvm_current_gemcache_dir()
1085
- {
1086
- if __rvm_using_gemset_globalcache; then
1087
- echo "$rvm_gems_cache_path"
1088
- else
1089
- echo "${rvm_ruby_gem_home:-"$GEM_HOME"}/cache"
1090
- fi
1091
- return 0
1092
- }
1093
-
1094
- __rvm_Answer_to_the_Ultimate_Question_of_Life_the_Universe_and_Everything()
1095
- {
1096
- for index in {1..750} ; do sleep 0.25 ; echo -n '.' ; done ; printf "%d" 0x2A
1097
- echo
1098
- return 0
1099
- }
1100
-
1101
- __rvm_ultimate_question()
1102
- {
1103
- printf "
1104
- I do not know the Ultimate Question,
1105
- however I can help you build a more
1106
- powerful Ruby which can compute the
1107
- Ultimate Question:
1108
-
1109
- $ rvm install rbx
1110
-
1111
- "
1112
- return 0
1113
- }
1114
-
1115
- __rvm_load_env_file()
1116
- {
1117
- local string="$1"
1118
- if [[ -f "$rvm_path/environments/$string" ]]; then
1119
- # Restore the path to it's state minus rvm
1120
- __rvm_remove_rvm_from_path
1121
-
1122
- # source the environment file
1123
- \. "$rvm_path/environments/$string"
1124
-
1125
- # clear the PATH cache
1126
- builtin hash -r
1127
- elif [[ -n "$string" ]] ; then
1128
- rvm "$string"
1129
- else
1130
- : # TODO: This should have some error handling in the context.
1131
- fi
1132
- return 0
1133
- }
1134
-
1135
- __rvm_md5_for()
1136
- {
1137
- if command -v md5 > /dev/null; then
1138
- echo "$1" | md5
1139
- elif command -v md5sum > /dev/null ; then
1140
- echo "$1" | md5sum | awk '{print $1}'
1141
- else
1142
- "$rvm_path/scripts/log" "error" \
1143
- "Neither md5 nor md5sum were found in the PATH"
1144
- return 1
1145
- fi
1146
-
1147
- return 0
1148
- }
1149
-
1150
- __rvm_rvmrc_key()
1151
- {
1152
- __rvm_md5_for "$1"
1153
- return $?
1154
- }
1155
-
1156
- __rvm_reset_rvmrc_trust()
1157
- {
1158
- touch "$rvm_path/config/rvmrcs"
1159
- "$rvm_path/scripts/db" "$rvm_path/config/rvmrcs" \
1160
- "$(__rvm_rvmrc_key "$1")" "delete" >/dev/null 2>&1
1161
- return $?
1162
- }
1163
-
1164
- __rvm_trust_rvmrc()
1165
- {
1166
- touch "$rvm_path/config/rvmrcs"
1167
- __rvm_reset_rvmrc_trust "$1"
1168
- "$rvm_path/scripts/db" "$rvm_path/config/rvmrcs" \
1169
- "$(__rvm_rvmrc_key "$1")" "1" >/dev/null 2>&1
1170
- return $?
1171
- }
1172
-
1173
- __rvm_untrust_rvmrc()
1174
- {
1175
- touch "$rvm_path/config/rvmrcs"
1176
- __rvm_reset_rvmrc_trust "$1"
1177
- "$rvm_path/scripts/db" "$rvm_path/config/rvmrcs" \
1178
- "$(__rvm_rvmrc_key "$1")" "0" >/dev/null 2>&1
1179
- return $?
1180
- }
1181
-
1182
- __rvm_rvmrc_stored_trust()
1183
- {
1184
- touch "$rvm_path/config/rvmrcs"
1185
- "$rvm_path/scripts/db" "$rvm_path/config/rvmrcs" \
1186
- "$(__rvm_rvmrc_key "$1")"
1187
- return $?
1188
- }
1189
-
1190
- __rvm_rvmrc_tools()
1191
- {
1192
- local rvmrc_action="$1"
1193
- [[ $# -gt 0 ]] && shift
1194
- local rvmrc_path="$(builtin cd "${1:-$PWD}" >/dev/null 2>&1; pwd)/.rvmrc"
1195
- case "$rvmrc_action" in
1196
- reset)
1197
- __rvm_reset_rvmrc_trust "$rvmrc_path"
1198
- echo "Reset trust for $rvmrc_path"
1199
- ;;
1200
- trust)
1201
- __rvm_trust_rvmrc "$rvmrc_path"
1202
- echo "Marked $rvmrc_path as trusted"
1203
- ;;
1204
- untrust)
1205
- __rvm_untrust_rvmrc "$rvmrc_path"
1206
- echo "Marked $rvmrc_path as untrusted"
1207
- ;;
1208
- trusted)
1209
- local trusted_value="$(__rvm_rvmrc_stored_trust "$rvmrc_path")"
1210
- if [[ "$trusted_value" = "1" ]]; then
1211
- echo "The rvmrc at '$rvmrc_path' is currently trusted."
1212
- elif [[ "$trusted_value" = "0" ]]; then
1213
- echo "The rvmrc at '$rvmrc_path' is currently untrusted."
1214
- else
1215
- echo "The trustiworthiness of '$rvmrc_path' is currently unknown."
1216
- fi
1217
- ;;
1218
- load)
1219
- rvm_rvmrc_cwd="" rvm_trust_rvmrcs_flag=1 \
1220
- __rvm_project_rvmrc "$(dirname "$rvmrc_path")"
1221
- ;;
1222
- *)
1223
- echo "Usage: rvm rvmrc {trust,untrust,trusted,load,reset}"
1224
- return 1
1225
- ;;
1226
- esac
1227
- return $?
1228
- }
1229
-
1230
- __rvm_check_rvmrc_trustworthiness()
1231
- {
1232
- # Trust when they have the flag... of doom!
1233
- [[ -z "$1" || "$rvm_trust_rvmrcs_flag" = "1" ]] && return 0
1234
- value="$(__rvm_rvmrc_stored_trust "$1")"
1235
- if [[ -z "$value" ]] ; then
1236
- __rvm_ask_to_trust "$1"
1237
- else
1238
- [[ "$value" = "1" ]]
1239
- fi
1240
- return $?
1241
- }
1242
-
1243
- __rvm_ask_to_trust()
1244
- {
1245
-
1246
- local trusted value
1247
-
1248
- [[ -n "$rvm_promptless" ]] && return 2
1249
-
1250
- printf "
1251
- ============================================================
1252
- RVM has encountered a not yet trusted .rvmrc file in the
1253
- current working directory which contains the following code:
1254
- ============================================================
1255
-
1256
- $(cat $1)
1257
-
1258
- ============================================================
1259
- Trusting an .rvmrc file means that whenever you cd into the
1260
- directory RVM will excecute this .rvmrc script in your shell
1261
-
1262
- Do you wish to trust this .rvmrc from now on?
1263
- ============================================================
1264
- (y for yes, n for no)"
1265
-
1266
- # TODO: Eliminate infinite loop possibility.
1267
- while [[ -z "$trusted" ]] ; do
1268
-
1269
- printf " > "
1270
-
1271
- read -r response
1272
-
1273
- value="$(echo "$response" | tr '[[:upper:]]' '[[:lower:]]' | __rvm_strip)"
1274
-
1275
- if [[ "$response" = "y"* ]]; then
1276
- trusted=1
1277
-
1278
- elif [[ "$response" = "n"* ]]; then
1279
- trusted=0
1280
- fi
1281
- done
1282
-
1283
- if [[ ${trusted:-0} -gt 0 ]] ; then
1284
-
1285
- __rvm_trust_rvmrc "$1"
1286
-
1287
- return 0
1288
-
1289
- else
1290
- __rvm_untrust_rvmrc "$1"
1291
- return 1
1292
- fi
1293
- }
1294
-
1295
- # Checks the rvmrc for the given directory. Note that if
1296
- # argument is passed, it will be used instead of pwd.
1297
- __rvm_project_rvmrc()
1298
- {
1299
- local cwd
1300
-
1301
- # Get the first argument or the pwd.
1302
- cwd="${1:-"$PWD"}"
1303
-
1304
- while : ; do
1305
-
1306
- if [[ -z "$cwd" || "$HOME" = "$cwd" || "/" = "$cwd" ]] ; then
1307
-
1308
- if [[ -n "${rvm_rvmrc_cwd:-""}" ]] ; then
1309
-
1310
- if [[ ${rvm_project_rvmrc_default:-0} -eq 1 ]]; then
1311
-
1312
- __rvm_load_env_file "default"
1313
-
1314
- elif [[ -n "${rvm_previous_environment:-""}" ]] ; then
1315
-
1316
- __rvm_load_env_file "$rvm_previous_environment"
1317
-
1318
- fi
1319
-
1320
- unset rvm_rvmrc_cwd rvm_previous_environment
1321
-
1322
- fi
1323
- break
1324
- else
1325
-
1326
- if [[ -f "$cwd/.rvmrc" ]] ; then
1327
-
1328
- if [[ "${rvm_rvmrc_cwd:-""}" != "$cwd" ]] ; then
1329
-
1330
- __rvm_check_rvmrc_trustworthiness "$cwd/.rvmrc"
1331
-
1332
- local rvm_trustworthiness_result="$?"
1333
-
1334
- if [[ "$rvm_trustworthiness_result" = 0 ]]; then
1335
-
1336
- rvm_previous_environment="$(__rvm_environment_identifier)"
1337
-
1338
- rvm_rvmrc_cwd="$cwd"
1339
-
1340
- source "$cwd/.rvmrc"
1341
-
1342
- return 0
1343
- else
1344
- return "$rvm_trustworthiness_result"
1345
- fi
1346
- fi
1347
- break
1348
-
1349
- else
1350
- cwd="$(dirname "$cwd")"
1351
- fi
1352
- fi
1353
- done
1354
-
1355
- return $?
1356
- }
1357
-
1358
- __rvm_record_install()
1359
- {
1360
-
1361
- local recorded_ruby_name rvm_install_record_file rvm_install_command
1362
-
1363
- [[ -z "$1" ]] && return
1364
-
1365
- recorded_ruby_name="$("$rvm_path/scripts/tools" strings "$1")"
1366
-
1367
- rvm_install_record_file="$rvm_path/config/installs"
1368
-
1369
- rvm_install_command=$(printf "$recorded_ruby_name $rvm_install_arguments\n")
1370
-
1371
- \touch "$rvm_install_record_file"
1372
-
1373
- \rm -f "$rvm_install_record_file.tmp"
1374
-
1375
- \grep -v "^$recorded_ruby_name " < "$rvm_install_record_file" \
1376
- > "$rvm_install_record_file.tmp"
1377
-
1378
- echo "$rvm_install_command" >> "$rvm_install_record_file.tmp"
1379
-
1380
- \rm -f "$rvm_install_record_file"
1381
-
1382
- \mv "$rvm_install_record_file.tmp" "$rvm_install_record_file"
1383
-
1384
- return 0
1385
- }
1386
-
1387
- __rvm_remove_install_record()
1388
- {
1389
- local recorded_ruby_name rvm_install_record_file
1390
-
1391
- recorded_ruby_name="$("$rvm_path/scripts/tools" strings "$1")"
1392
-
1393
- rvm_install_record_file="$rvm_path/config/installs"
1394
-
1395
- if [[ -s "$rvm_install_record_file" ]]; then
1396
-
1397
- \mv "$rvm_install_record_file" "$rvm_install_record_file.tmp"
1398
-
1399
- \grep -v "^$recorded_ruby_name " < "$rvm_install_record_file.tmp" \
1400
- > "$rvm_install_record_file"
1401
-
1402
- \rm -f "$rvm_install_record_file.tmp"
1403
- fi
1404
-
1405
- return 0
1406
- }
1407
-
1408
- __rvm_recorded_install_command()
1409
- {
1410
- local recorded_ruby_name recorded_ruby_match
1411
-
1412
- recorded_ruby_name="$("$rvm_path/scripts/tools" strings "$1" \
1413
- | awk -F"${rvm_gemset_separator:-"@"}" '{print $1}')"
1414
-
1415
- [[ -z "$recorded_ruby_name" ]] && return 1
1416
-
1417
- recorded_ruby_match="^$recorded_ruby_name "
1418
-
1419
- if [[ -s "$rvm_path/config/installs" ]] \
1420
- && \grep -q "$recorded_ruby_match" "$rvm_path/config/installs" ; then
1421
-
1422
- \grep "$recorded_ruby_match" < "$rvm_path/config/installs" | head -n1
1423
-
1424
- else
1425
- return 1
1426
- fi
1427
- return $?
1428
- }
1429
-
1430
- __rvm_environment_identifier()
1431
- {
1432
- local path string
1433
-
1434
- path="${GEM_HOME:-""}"
1435
-
1436
- string="${path//*gems\//}"
1437
- string="${string//\/*/}"
1438
-
1439
- printf "${string:-system}"
1440
-
1441
- return $?
1442
- }
1443
-
1444
- __rvm_expand_ruby_string()
1445
- {
1446
- local string current_ruby
1447
-
1448
- string="$1"
1449
-
1450
- if [[ -z "$string" ]] ; then
1451
-
1452
- "$rvm_path/scripts/list" strings | tr ' ' "\n"
1453
-
1454
- return $?
1455
-
1456
- fi
1457
-
1458
- case "$string" in
1459
-
1460
- all)
1461
- "$rvm_path/scripts/list" strings | tr ' ' "\n"
1462
- ;;
1463
-
1464
- all-gemsets)
1465
- "$rvm_path/scripts/list" gemsets strings
1466
- ;;
1467
-
1468
- default-with-rvmrc|rvmrc)
1469
- "$rvm_path/scripts/tools" path-identifier "$PWD"
1470
- ;;
1471
-
1472
- all-rubies|rubies)
1473
- "$rvm_path/scripts/list" rubies strings
1474
- ;;
1475
-
1476
- current-ruby|gemsets)
1477
- current_ruby="$(__rvm_environment_identifier \
1478
- | awk -F"${rvm_gemset_separator:-"@"}" '{print $string}')"
1479
-
1480
- rvm_silence_logging=1 "$rvm_path/scripts/gemsets" list \
1481
- | sed "s/^/$current_ruby${rvm_gemset_separator:-"@"}/"
1482
- ;;
1483
-
1484
- current)
1485
- __rvm_environment_identifier
1486
- ;;
1487
-
1488
- aliases)
1489
- awk -F= '{print $string}' < "$rvm_path/config/alias"
1490
- ;;
1491
-
1492
- *)
1493
- echo "$string" | tr "," "\n" | __rvm_strip
1494
- ;;
1495
-
1496
- esac
1497
-
1498
- return $?
1499
- }