gemrage 0.1.1 → 0.1.2

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