rvm 1.0.2 → 1.0.3

Sign up to get free protection for your applications and to get access to all the features.
data/scripts/set CHANGED
@@ -100,7 +100,8 @@ __rvm_summary() {
100
100
  summary="$summary \033[0;31m${#errors[*]} errors: $(echo "${errors[*]}" | sed 's# #, #g')\033[0m\n"
101
101
  fi
102
102
  total=${#rubies[*]}
103
- if [[ ! -z "$ZSH_VERSION" ]] ; then array_start=1 ; else array_start=0 ; fi
103
+ if [[ -n "${ZSH_VERSION:-""}" ]] ; then array_start=1 ; else array_start=0 ; fi
104
+
104
105
  printf "$summary" | tee -a log/summary.log
105
106
  return ${#errors[*]}
106
107
  }
@@ -114,7 +115,7 @@ __rvm_yaml() {
114
115
  for var in ${errors[*]} ; do yaml="$yaml\n - $var" ; done
115
116
  yaml="$yaml\nrubies:"
116
117
  total=${#rubies[*]}
117
- if [[ ! -z "$ZSH_VERSION" ]] ; then array_start=1 ; else array_start=0 ; fi
118
+ if [[ -n "${ZSH_VERSION:-""}" ]] ; then array_start=1 ; else array_start=0 ; fi
118
119
  for (( index = $array_start ; index < $total + $array_start ; index++ )) ; do
119
120
  if [[ ! -z "$rvm_debug_flag" ]] ; then
120
121
  "$rvm_scripts_path/log" "debug" "${rubies[$index]}: ${statuses[$index]}"
@@ -136,7 +137,8 @@ __rvm_json() {
136
137
  json="$json\n \"rubies\": {"
137
138
 
138
139
  total=${#rubies[*]}
139
- if [[ ! -z "$ZSH_VERSION" ]] ; then array_start=1 ; else array_start=0 ; fi
140
+ if [[ -n "${ZSH_VERSION:-""}" ]] ; then array_start=1 ; else array_start=0 ; fi
141
+
140
142
  for (( index = $array_start ; index < $total + $array_start ; index++ )) ; do
141
143
  if [[ ! -z "$rvm_debug_flag" ]] ; then
142
144
  "$rvm_scripts_path/log" "debug" "${rubies[$index]}: ${statuses[$index]}"
@@ -157,10 +159,9 @@ __rvm_json() {
157
159
 
158
160
  rubies=() ; successes=() ; errors=() ; statuses=()
159
161
 
160
-
161
- action="$1";
162
- [[ "$#" -gt 0 ]] && shift
163
- args="$*"
162
+ args=($*)
163
+ action="${args[0]}"
164
+ args="$(echo ${args[@]:1}) " # Strip trailing / leading / extra spacing.
164
165
 
165
166
  if [[ "$action" == "ruby" ]] && echo "$args" | \grep -q "^'--[^[:space:]]*'$" ; then
166
167
  "$rvm_scripts_path/log" "warn" "You called rvm ruby with the arguments $args which look like use options."
data/scripts/snapshot CHANGED
@@ -178,12 +178,14 @@ snapshot_usage() {
178
178
  return 1
179
179
  }
180
180
 
181
- action="$1"
182
- [[ "$#" -gt 0 ]] && shift
181
+
182
+ args=($*)
183
+ action="${args[0]}"
184
+ args="$(echo ${args[@]:1}) " # Strip trailing / leading / extra spacing.
183
185
 
184
186
  case "$action" in
185
- save) snapshot_save "$@" ;;
186
- load) snapshot_load "$@" ;;
187
+ save) snapshot_save "$args" ;;
188
+ load) snapshot_load "$args" ;;
187
189
  *) snapshot_usage ;;
188
190
  esac
189
191
 
data/scripts/tools CHANGED
@@ -38,14 +38,16 @@ tools_strings() {
38
38
  done
39
39
  }
40
40
 
41
- [[ -z "$1" ]] && usage
41
+ args=($*)
42
+ action="${args[0]}"
43
+ args="$(echo ${args[@]:1}) " # Strip trailing / leading / extra spacing.
42
44
 
43
- action="$1"; shift
45
+ [[ -z "$action" ]] && usage
44
46
 
45
47
  case "$action" in
46
48
  identifier) tools_identifier ;;
47
- path-identifier) tools_path_identifier "$@" ;;
48
- strings) tools_strings "$@" ;;
49
+ path-identifier) tools_path_identifier "$args" ;;
50
+ strings) tools_strings "$args" ;;
49
51
  *) usage ;;
50
52
  esac
51
53
 
data/scripts/update CHANGED
@@ -201,7 +201,7 @@ fi
201
201
  spinner
202
202
  if [[ -d gemsets/ ]] ; then
203
203
  \mkdir -p "$rvm_gemsets_path"
204
- for gemset_file in $(cd gemsets ; find \. -iname '*.gems' | sed 's/^\.\///') ; do
204
+ for gemset_file in $(builtin cd gemsets ; find \. -iname '*.gems' | sed 's/^\.\///') ; do
205
205
  destination="$rvm_gemsets_path/$gemset_file"
206
206
  destination_path="$(dirname "$destination")"
207
207
  if [[ ! -s "$destination" ]] ; then
@@ -214,7 +214,7 @@ fi
214
214
  spinner
215
215
  if [[ -d patchsets/ ]] ; then
216
216
  \mkdir -p "$rvm_patchsets_path"
217
- for patchset_file in $(cd patchsets ; find \. -iname '*' | sed 's/^\.\///') ; do
217
+ for patchset_file in $(builtin cd patchsets ; find \. -iname '*' | sed 's/^\.\///') ; do
218
218
  destination="$rvm_patchsets_path/$patchset_file"
219
219
  destination_path="$(dirname "$destination")"
220
220
  if [[ ! -s "$destination" ]] ; then
@@ -318,6 +318,7 @@ if [[ "$upgrade_flag" -eq 1 ]] ; then
318
318
  printf "\n * 'rvm notes' tells you OS dependency packages for installing rubies."
319
319
  printf "\n * If you encounter any issues with a ruby your best bet is to 'rvm remove X ; rvm install X' "
320
320
  printf "\n * Gemset separator is '@' and will remain unless any rubies error using it."
321
+ printf "\n * If you wish to have the 'pretty colors' again, set 'export rvm_pretty_print=1' in ~/.rvmrc.\n"
321
322
  printf "\n$(tput sgr0)\n"
322
323
  check_rubyopt_conditions
323
324
  printf "\nUpgrade of RVM in $rvm_path/ is complete.\n\n"
data/scripts/upgrade CHANGED
@@ -4,7 +4,7 @@ unset GREP_OPTIONS
4
4
  source "$rvm_scripts_path/base"
5
5
 
6
6
  usage() {
7
- echo "Usage: rvm upgrade prefix [existing-ruby]" >&2
7
+ echo "Usage: rvm upgrade prefix [specific version]" >&2
8
8
  echo "Upgrades the latest installed ruby with a given prefix (e.g. ree) to a new version." >&2
9
9
  exit 1
10
10
  }
@@ -13,7 +13,7 @@ confirm() {
13
13
  printf "$1 (Y/n): "
14
14
  local confirmation_response
15
15
  read -r confirmation_response
16
- [[ -z "$confirmation_response" ]] || echo "$confirmation_response" | \grep -qi '^y'
16
+ [[ -z "$confirmation_response" ]] || echo $confirmation_response | \grep -qi '^y\|^Y'
17
17
  }
18
18
 
19
19
  die_with_error() {
@@ -30,8 +30,7 @@ expand_existing_ruby() {
30
30
  local ruby_name
31
31
  while read -r ruby_name; do
32
32
  if [[ "$ruby_name" != "$expanded_destination"* ]]; then
33
- echo "$ruby_name"
34
- return 0
33
+ echo "$ruby_name" ; return 0
35
34
  fi
36
35
  done < <("$rvm_scripts_path/list" strings | tr ' ' '\n' | sort -ur | \grep "^$prefix" | \grep -v '-head$' | head -n1)
37
36
  return 1
@@ -48,24 +47,26 @@ upgrade_ruby() {
48
47
  if [[ ! -d "$rvm_rubies_path/$expanded_destination" ]]; then
49
48
  "$rvm_scripts_path/log" "info" "Installing new ruby $expanded_destination"
50
49
  $rvm_bin_path/rvm install "$expanded_destination"
51
- result="$?"
52
- [[ "$result" -gt 0 ]] && die_with_error "Unable to install ruby $expanded_destination. Please install it manually to continue." "$result"
50
+ result="$?" ; [[ "$result" -gt 0 ]] && die_with_error "Unable to install ruby $expanded_destination. Please install it manually to continue." "$result"
53
51
  fi
54
52
 
55
53
  "$rvm_scripts_path/log" "info" "Migrating gems from $expanded_source to $expanded_destination"
56
54
  "$rvm_scripts_path/migrate" "$expanded_source" "$expanded_destination"
57
- result="$?"
58
- [[ "$result" -gt 0 ]] && die_with_error "Error migrating gems." "$result"
55
+ result="$?" ; [[ "$result" -gt 0 ]] && die_with_error "Error migrating gems." "$result"
59
56
 
60
57
  "$rvm_scripts_path/log" "info" "Upgrade complete!"
61
58
  }
62
59
 
63
- [[ -z "$1" ]] && usage
60
+ args=($*)
61
+ destination_ruby="${args[0]}"
62
+ source_ruby="${args[1]:-"$(expand_existing_ruby "$destination_ruby")"}"
63
+ args="$(echo ${args[@]:2}) " # Strip trailing / leading / extra spacing.
64
+
65
+ [[ -z "$source_ruby" ]] && usage
64
66
 
65
- destination_ruby="$1"; shift
66
67
  expanded_destination="$(expand_ruby_name "$destination_ruby")"
67
- [[ -z "$expanded_destination" ]] && die_with_error "The destination ruby was not a valid ruby string."
68
68
 
69
- source_ruby="${1:-"$(expand_existing_ruby "$destination_ruby")"}"
69
+ [[ -z "$source_ruby" ]] && die_with_error "The Source ruby was not specified, a valid ruby string, or not found."
70
+ [[ -z "$expanded_destination" ]] && die_with_error "The destination ruby was not a valid ruby string, or not found."
70
71
 
71
72
  upgrade_ruby
data/scripts/utility CHANGED
@@ -2,24 +2,28 @@
2
2
 
3
3
  __rvm_setup() {
4
4
  # ZSH has 1 based array indexing, bash has 0 based.
5
- if [[ -n "$ZSH_VERSION" ]] ; then
5
+ if [[ -n "${ZSH_VERSION:-""}" ]] ; then
6
6
  __shell_array_start=1
7
7
  # Set clobber for zsh users, for compatibility with bash's append operator ( >> file ) behavior
8
8
  setopt | \grep -qs '^noclobber$'
9
9
  rvm_zsh_clobber=$?
10
10
  setopt clobber
11
11
  else
12
- __shell_array_start=0
12
+ __shell_array_start=0 # bash array indexes are 0 based.
13
13
  fi ; export __shell_array_start
14
14
  }
15
15
 
16
16
  __rvm_teardown() {
17
- if [[ -n "$ZSH_VERSION" ]] ; then
17
+ declare rvm_dump_environment_flag=${rvm_dump_environment_flag:-0}
18
+ declare rvm_clang_flag=${rvm_clang_flag:-0}
19
+ declare rvm_prior_cc=${rvm_prior_cc:-""}
20
+
21
+ if [[ -n "${ZSH_VERSION:-""}" ]] ; then
18
22
  if [[ "$rvm_zsh_clobber" -eq 0 ]] ; then
19
23
  setopt noclobber
20
24
  fi ; unset rvm_zsh_clobber
21
25
  else
22
- :
26
+ : # currently we are not doing any option setting for bash.
23
27
  fi
24
28
  # Ruby strings are scoped to their action.
25
29
  # Hence, we ensure we remove them at in
@@ -37,39 +41,53 @@ __rvm_teardown() {
37
41
 
38
42
  unset rvm_ruby_strings
39
43
 
40
- [[ -n "$rvm_dump_environment_flag" ]] && __rvm_dump_environment
44
+ [[ $rvm_dump_environment_flag -eq 1 ]] && __rvm_dump_environment
41
45
 
46
+ return 0
42
47
  }
43
48
 
49
+ # Dump the current environment to a file.
44
50
  __rvm_dump_environment() {
45
51
  # Note: This assumes that there is a ','
46
52
  local dump_environment_file="${rvm_dump_environment_flag/,*/}"
47
53
  local dump_environment_type="${rvm_dump_environment_flag/*,/}"
48
54
  if [[ -n "$dump_environment_file" && -n "$dump_environment_type" ]]; then
49
- if [[ "$dump_environment_type" == "atheis"* ]]; then
50
- \rm -rf "$dump_environment_file" && ln -s /dev/null "$dump_environment_file" >/dev/null 2>&1
55
+ if [[ "$dump_environment_type" == "atheis"* ]] && [[ -f "$dump_environment_file" ]] ; then
56
+ # TODO: Query Darcy about the ln.
57
+ \rm -f "$dump_environment_file" && ln -s /dev/null "$dump_environment_file" >/dev/null 2>&1
51
58
  else
52
59
  "$rvm_scripts_path/environment-convertor" "$dump_environment_type" "$(__rvm_environment_identifier)" > "$dump_environment_file"
53
- [[ "$?" -gt 0 ]] && \rm -rf "$dump_environment_file"
60
+ if [[ "$?" -gt 0 ]] && [[ -f "$dump_environment_file" ]] ; then
61
+ \rm -f "$dump_environment_file"
62
+ fi
54
63
  fi
55
64
  fi ; unset rvm_dump_environment_flag
65
+ return 0
56
66
  }
57
67
 
58
68
  # Return a list of directories under a given base path.
59
69
  # Derived from rvm_ruby_string.
60
70
  __rvm_ruby_string_paths_under() {
61
- local patch_parts="$(echo "$rvm_ruby_string" | \tr '-' ' ' | __rvm_strip)"
62
- while true; do
63
- echo "$1/$patch_parts" | \tr ' ' '/' | sed 's#\/$##'
64
- [[ -z "$patch_parts" ]] && break
65
- patch_parts="$(echo "$patch_parts" | awk '{$NF=""; print}' | __rvm_strip)"
71
+ local path="$1"
72
+ local path_parts="${rvm_ruby_string//-/ }"
73
+
74
+ while true ; do
75
+ echo "$path/$path_parts" | sed -e 's# #/#g' -e 's#/$##g'
76
+ [[ -z "$path_parts" ]] && break
77
+ path_parts="$(echo "$path_parts" | awk '{$NF=""; print}' | __rvm_strip)"
66
78
  done
79
+
80
+ return 0
67
81
  }
68
82
 
69
83
  # Query the rvm key-value database for a specific key
70
84
  # Allow overrides from user specifications in $rvm_config_path/user
71
85
  __rvm_db() {
72
- key=$1 ; variable=$2
86
+ local value="" key="" variable=""
87
+
88
+ key=${1:-""}
89
+ variable=${2:-""}
90
+
73
91
  if [[ -f "$rvm_config_path/user" ]] ; then
74
92
  value="$($rvm_scripts_path/db "$rvm_config_path/user" "$key")"
75
93
  fi
@@ -79,13 +97,14 @@ __rvm_db() {
79
97
  fi
80
98
 
81
99
  if [[ -n "$value" ]] ; then
82
- if [[ -z $variable ]] ; then
100
+ if [[ -z "$variable" ]] ; then
83
101
  echo $value
84
102
  else
85
103
  eval "$variable='$value'"
86
104
  fi
87
105
  fi
88
- unset key value variable
106
+
107
+ return 0
89
108
  }
90
109
 
91
110
  is_a_function() { type $1 | head -n 1 | \grep -q "function" ; }
@@ -100,15 +119,16 @@ __rvm_quote_args() {
100
119
  fi
101
120
  done
102
121
  echo "$quoted_string" | sed -e 's/^ *//g' -e 's/ *$//g'
122
+ return 0
103
123
  }
104
124
 
105
125
  __rvm_quote_args_with_shift() {
106
126
  local shift_value="$1"; shift
107
127
  while [[ "$shift_value" -gt 0 && "$#" -gt 0 ]]; do
108
- shift
109
- let shift_value=shift_value-1
128
+ shift ; ((shift_value--))
110
129
  done
111
130
  __rvm_quote_args "$@"
131
+ return 0
112
132
  }
113
133
 
114
134
  __rvm_warn_on_rubyopt() {
@@ -121,17 +141,11 @@ __rvm_warn_on_rubyopt() {
121
141
  }
122
142
 
123
143
  __rvm_strings() {
124
- unset results
125
- for rvm_ruby_string in $(echo $rvm_ruby_args) ; do
126
- #__rvm_ruby_string
127
- if [[ $? -gt 0 ]] ; then
128
- return 1
129
- else
130
- results="$results $(__rvm_select ; echo $rvm_ruby_string)"
131
- fi
144
+ local strings=""
145
+ for rvm_ruby_string in $(echo ${rvm_ruby_args:-$rvm_ruby_string}) ; do
146
+ strings="$strings $(__rvm_select ; echo $rvm_ruby_string)"
132
147
  done
133
- echo $results
134
- unset results
148
+ echo $strings
135
149
  return 0
136
150
  }
137
151
 
@@ -168,45 +182,71 @@ __rvm_remove_rvm_from_path() {
168
182
 
169
183
  # Run a specified command and log it.
170
184
  __rvm_run() {
171
- log_file_name="$1" ; command="$2" ; message="$3"
185
+ local log_file_name="$1"
186
+ local command="$2"
187
+ local message="$3"
188
+
172
189
  if [[ -z "$rvm_ruby_log_path" ]] ; then rvm_ruby_log_path="$rvm_log_path" ; fi
190
+
173
191
  if [[ -n "$message" ]] ; then "$rvm_scripts_path/log" "info" "$message" ; fi
192
+
174
193
  if [[ -n "$rvm_debug_flag" ]] ; then
175
194
  "$rvm_scripts_path/log" "debug" "Executing: $command"
176
195
  fi
177
196
 
178
197
  \mkdir -p "$(dirname "$rvm_ruby_log_path/$log_file_name.log")"
198
+
179
199
  \touch "$rvm_ruby_log_path/$log_file_name.log" "$rvm_ruby_log_path/$log_file_name.error.log" # for zsh :(
180
- echo "[$(date +'%Y-%m-%d %H:%M:%S')] $command" | tee "$rvm_ruby_log_path/$log_file_name.log" >> "$rvm_ruby_log_path/$log_file_name.error.log"
200
+
201
+ echo "[$(date +'%Y-%m-%d %H:%M:%S')] $command" | \tee "$rvm_ruby_log_path/$log_file_name.log" >> "$rvm_ruby_log_path/$log_file_name.error.log"
202
+
181
203
  if [[ -z "$rvm_niceness" ]] || [[ "0" = "$rvm_niceness" ]] ; then
182
204
  eval "$command" >> "$rvm_ruby_log_path/$log_file_name.log" 2>> "$rvm_ruby_log_path/$log_file_name.error.log"
183
205
  else
184
206
  eval "nice -n $rvm_niceness $command" >> $rvm_ruby_log_path/$log_file_name.log 2>> $rvm_ruby_log_path/$log_file_name.error.log
207
+ fi ; local result=$?
208
+
209
+ if [[ $result -gt 0 ]] ; then
210
+ "$rvm_scripts_path/log" "error" "Error running '$command', please check $rvm_ruby_log_path/$log_file_name*.log" ; __rvm_pushpop
185
211
  fi
186
- if [[ $? -gt 0 ]] ; then "$rvm_scripts_path/log" "error" "Error running '$command', please check $rvm_ruby_log_path/$log_file_name*.log" ; __rvm_pushpop ; return 1 ; fi
187
- unset log_file command
212
+
213
+ return $result
188
214
  }
189
215
 
190
216
  # Runs a command in a given env.
191
217
  __rvm_run_with_env() {
192
- log_file_name="$1" ; env_name="$2" ; command="$3" ; message="$4"
218
+ local log_file_name="${1:-""}"
219
+ local env_name="${2:-""}"
220
+ local command="${3:-""}"
221
+ local message="${4:-""}"
222
+
193
223
  if [[ -z "$env_name" ]]; then env_name="$(__rvm_environment_identifier)"; fi
224
+
194
225
  if [[ -z "$rvm_ruby_log_path" ]] ; then rvm_ruby_log_path="$rvm_log_path" ; fi
226
+
195
227
  if [[ -n "$message" ]] ; then "$rvm_scripts_path/log" "info" "$message" ; fi
228
+
196
229
  if [[ -n "$rvm_debug_flag" ]] ; then
197
230
  "$rvm_scripts_path/log" "debug" "Executing: $command in environment "$env_name""
198
231
  fi
199
232
 
200
233
  \mkdir -p "$(dirname "$rvm_ruby_log_path/$log_file_name.log")"
234
+
201
235
  \touch "$rvm_ruby_log_path/$log_file_name.log" "$rvm_ruby_log_path/$log_file_name.error.log" # for zsh :(
236
+
202
237
  echo "[$(date +'%Y-%m-%d %H:%M:%S')] $command # under $env_name" | tee "$rvm_ruby_log_path/$log_file_name.log" >> "$rvm_ruby_log_path/$log_file_name.error.log"
203
- if [[ -z "$rvm_niceness" ]] || [[ "0" = "$rvm_niceness" ]] ; then
238
+
239
+ if [[ -z "$rvm_niceness" || "0" = "$rvm_niceness" ]] ; then
204
240
  eval "__rvm_with_env '$env_name' '$command'" >> "$rvm_ruby_log_path/$log_file_name.log" 2>> "$rvm_ruby_log_path/$log_file_name.error.log"
205
241
  else
206
242
  eval "nice -n $rvm_niceness __rvm_with_env '$env_name' '$command'" >> $rvm_ruby_log_path/$log_file_name.log 2>> $rvm_ruby_log_path/$log_file_name.error.log
243
+ fi ; result=$?
244
+
245
+ if [[ $result -gt 0 ]] ; then
246
+ "$rvm_scripts_path/log" "error" "Error running '$command' under $env_name, please check $rvm_ruby_log_path/$log_file_name*.log" ; __rvm_pushpop
207
247
  fi
208
- if [[ $? -gt 0 ]] ; then "$rvm_scripts_path/log" "error" "Error running '$command' under $env_name, please check $rvm_ruby_log_path/$log_file_name*.log" ; __rvm_pushpop ; return 1 ; fi
209
- unset log_file command env_name
248
+
249
+ return $result
210
250
  }
211
251
 
212
252
  # Unset both rvm variables as well as ruby-specific variables
@@ -214,7 +254,7 @@ __rvm_run_with_env() {
214
254
  __rvm_cleanse_variables() {
215
255
  __rvm_unset_ruby_variables
216
256
 
217
- if [[ "$rvm_sticky_flag" = "1" ]] ; then export rvm_gemset_name ; else unset rvm_gemset_name ; fi
257
+ if [[ ${rvm_sticky_flag:-0} -eq 1 ]] ; then export rvm_gemset_name ; else unset rvm_gemset_name ; fi
218
258
 
219
259
  unset rvm_action rvm_irbrc_file rvm_command rvm_error_message rvm_url rvm_force_flag rvm_all_flag rvm_reconfigure_flag rvm_make_flags rvm_bin_flag rvm_import_flag rvm_export_flag rvm_self_flag rvm_gem_flag rvm_rubygems_flag rvm_debug_flag rvm_delete_flag rvm_summary_flag rvm_test_flag _rvm_spec_flag rvm_json_flag rvm_yaml_flag rvm_shebang_flag rvm_env_flag rvm_tail_flag rvm_use_flag rvm_dir_flag rvm_list_flag rvm_empty_flag rvm_file_name rvm_benchmark_flag rvm_clear_flag rvm_name_flag rvm_verbose_flag rvm_user_flag rvm_system_flag rvm_ruby_configure_flags rvm_uninstall_flag rvm_install_flag rvm_llvm_flag rvm_ruby_bits rvm_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
220
260
  }
@@ -226,27 +266,23 @@ __rvm_unset_ruby_variables() {
226
266
 
227
267
  # Usage: __rvm_with_env 'env-name' 'command'
228
268
  __rvm_with_env() {
229
- [[ -n "$rvm_trace_flag" ]] && rvm_env_args="--trace"
230
- rvm_env_command="$(echo "$2" | sed "s/rvm /rvm $rvm_env_args /")"
231
- # Subshells!
232
- (
233
- source "$rvm_scripts_path/rvm"
234
- rvm "$rvm_env_args" use $1 && eval "$rvm_env_command"
235
- )
236
- unset rvm_env_args rvm_env_command
269
+ local environment_id="$1" command="$2"
270
+ ( rvm use "$environment_id" ; eval "$command" )
237
271
  }
238
272
 
239
273
  # Returns the first 1.8.7-compatible (partly) ruby for use
240
274
  # with things like rbx etc which require a ruby be installed.
241
275
  __rvm_18_compat_ruby() {
242
- rubies=""
276
+ local rubies=""
243
277
  for ruby_name in $(\ls "$rvm_rubies_path"); do
244
278
  if [[ ! -L "$rvm_rubies_path/$ruby_name" ]] && [[ "$ruby_name" =~ 1.8. || "$ruby_name" =~ rbx- || "$ruby_name" =~ ree- ]] ; then
245
279
  rubies="$rubies $ruby_name"
246
280
  fi
247
281
  done; unset ruby_name
282
+
248
283
  echo "$rubies" | sed 's/^ //' | \tr ' ' '\n' | sort | tail -n1
249
- unset rubies
284
+
285
+ return 0
250
286
  }
251
287
 
252
288
  __rvm_ensure_has_18_compat_ruby() {
@@ -258,23 +294,32 @@ __rvm_ensure_has_18_compat_ruby() {
258
294
  "$rvm_scripts_path/log" "fail" "Please install it manually (or a compatible alternative) to proceed."
259
295
  compat_result=1
260
296
  fi ; unset original_ruby
297
+ # TODO: Why are we unsetting original_ruby here
261
298
  return $compat_result
262
299
  fi
300
+
301
+ return 0
263
302
  }
264
303
 
265
304
  __rvm_inherit_trace_flag() {
266
305
  if [[ -n "$rvm_trace_flag" ]]; then
267
306
  set -x ; export rvm_trace_flag
268
307
  fi
308
+ return 0
269
309
  }
270
310
 
271
311
  # Cleans up temp folders for a given prefix,
272
312
  # typically the current process id.
273
313
  __rvm_cleanup_temp_for() {
274
- [[ -z "$1" ]] && return 1
314
+ local prefix="$1"
315
+
316
+ [[ -z "$prefix" ]] && return 1
317
+
275
318
  if [[ -d "$rvm_tmp_path/" ]]; then
276
- \rm -rf "$rvm_tmp_path/$1"* >/dev/null 2>&1
277
- fi ; exit
319
+ \rm -rf "$rvm_tmp_path/$prefix"* >/dev/null 2>&1
320
+ fi
321
+
322
+ exit
278
323
  }
279
324
 
280
325
  __rvm_cleanup_temp_on_exit() {
@@ -283,7 +328,7 @@ __rvm_cleanup_temp_on_exit() {
283
328
 
284
329
  __rvm_set_rvmrc() {
285
330
  if [[ "$HOME" != "$PWD" ]] ; then
286
- if [[ "$rvm_verbose_flag" -eq 1 ]] ; then flags="use " ; fi
331
+ if [[ ${rvm_verbose_flag:-0} -eq 1 ]] ; then flags="use " ; fi
287
332
 
288
333
  if [[ -s .rvmrc ]] ; then
289
334
  mv .rvmrc .rvmrc.$(date +%m.%d.%Y-%H:%M:%S)
@@ -291,6 +336,7 @@ __rvm_set_rvmrc() {
291
336
  fi
292
337
 
293
338
  local identifier=$(__rvm_environment_identifier)
339
+
294
340
  printf "if [[ -n \"\$rvm_environments_path\" && -s \"\$rvm_environments_path/$identifier\" ]] ; then\n \\. \"\$rvm_environments_path/$identifier\"" > .rvmrc
295
341
  printf "\nelse\n rvm --create $flags \"$identifier\"\nfi" >> .rvmrc
296
342
 
@@ -300,7 +346,9 @@ __rvm_set_rvmrc() {
300
346
  fi
301
347
  }
302
348
  __rvm_load_rvmrc() {
303
- [[ -z "$rvm_ignore_rvmrc" ]] && return
349
+ rvm_ignore_rvmrc=${rvm_ignore_rvmrc:-0}
350
+ [[ $rvm_ignore_rvmrc -eq 1 ]] && return 0
351
+
304
352
  for rvmrc in /etc/rvmrc $HOME/.rvmrc ; do
305
353
  if [[ -f "$rvmrc" ]] ; then
306
354
  if \grep -q '^\s*rvm .*$' $rvmrc ; then
@@ -311,6 +359,8 @@ __rvm_load_rvmrc() {
311
359
  fi
312
360
  fi
313
361
  done
362
+
363
+ return 0
314
364
  }
315
365
 
316
366
  # Wrap the specified ruby code file in a Benchmark.bmbm block and execute it.
@@ -325,14 +375,16 @@ __rvm_benchmark() {
325
375
  rvm_action="ruby"
326
376
  if [[ -n "$rvm_debug_flag" ]] ; then printf "\n$rvm_tmp_path/$$.rb:\n$(cat $rvm_tmp_path/$$.rb)" ; fi
327
377
  # Override ruby string stuff, pass through.
328
- old_rvm_ruby_string=$rvm_ruby_string
378
+ local old_rvm_ruby_string=$rvm_ruby_string
379
+ # TODO: We can likely do this in a subshell in order to preserve the original environment?
329
380
  unset rvm_ruby_string
330
381
  export rvm_ruby_strings
331
382
  "$rvm_scripts_path/set" "$rvm_action" $rvm_ruby_args
332
383
  result=$?
333
384
  # Restore the state pre-sets.
334
385
  [[ -n "$old_rvm_ruby_string" ]] && rvm_ruby_string=$old_rvm_ruby_string
335
- unset old_rvm_ruby_string
386
+
387
+ return $result
336
388
  }
337
389
 
338
390
  # Loop over the currently installed rubies and refresh their binscripts.
@@ -344,12 +396,14 @@ __rvm_bin_scripts() {
344
396
  __rvm_bin_script
345
397
  fi
346
398
  done
399
+ return 0
347
400
  }
348
401
 
349
402
  # Write the bin/ wrapper script for currently selected ruby.
350
403
  # TODO: Adjust binscript to be able to handle all rubies not just the standard interpreteres.
351
404
  __rvm_bin_script() {
352
405
  "$rvm_scripts_path/wrapper" "$rvm_ruby_string"
406
+ return $?
353
407
  }
354
408
 
355
409
  # Add bin path if not present
@@ -358,18 +412,20 @@ __rvm_conditionally_add_bin_path() {
358
412
  PATH="${rvm_bin_path}:$PATH"
359
413
  builtin hash -r
360
414
  fi
415
+ return 0
361
416
  }
362
417
 
363
418
  # Reset any rvm gathered information about the system and its state.
364
419
  # rvm will refresh the stored information the next time it is called after reset.
365
420
  __rvm_reset() {
366
- __rvm_remove_rvm_from_path
367
- __rvm_conditionally_add_bin_path
368
- export PATH
421
+ __rvm_remove_rvm_from_path ; __rvm_conditionally_add_bin_path ; export PATH
422
+
369
423
  builtin hash -r
370
424
 
371
- for flag in default passenger editor ; do \rm -f "$rvm_bin_path"/${flag}_* ; done
372
- unset flag
425
+ local flag=""
426
+ for flag in default passenger editor ; do
427
+ \rm -f "$rvm_bin_path"/${flag}_*
428
+ done
373
429
 
374
430
  for file in system default ; do
375
431
  [[ -f "${rvm_path}/${file}" ]] && \rm -f "$rvm_path/${file}"
@@ -386,13 +442,17 @@ __rvm_reset() {
386
442
  done ; unset system_config variable
387
443
 
388
444
  \rm -f $rvm_bin_path/ruby $rvm_bin_path/gem $rvm_bin_path/rake $rvm_bin_path/irb $rvm_bin_path/default*
445
+
446
+ return 0
389
447
  }
390
448
 
391
449
  # Implode removes the entire rvm installation under $rvm_path.
392
450
  __rvm_implode() {
393
451
  while : ; do
394
452
  "$rvm_scripts_path/log" "warn" "Are you SURE you wish for rvm to implode? This will remove $rvm_path ? (type 'yes' or 'no')"
453
+
395
454
  read response
455
+
396
456
  if [[ "yes" = "$response" ]] ; then
397
457
  if [[ "/" = "$rvm_path" ]] ; then
398
458
  "$rvm_scripts_path/log" "error" "remove '/' ?!... Ni!"
@@ -411,16 +471,21 @@ __rvm_implode() {
411
471
  break
412
472
  fi
413
473
  done
474
+
475
+ return 0
414
476
  }
415
477
 
416
478
  # Output the current ruby's rvm source path.
417
479
  __rvm_source_dir() {
418
480
  if [[ -z "$rvm_ruby_selected_flag" ]] ; then __rvm_select ; fi
481
+
419
482
  if [[ -z "$rvm_ruby_src_path" ]] ; then
420
483
  "$rvm_scripts_path/log" "fail" "No source directory exists for the default implementation."
421
484
  else
422
485
  echo "$rvm_ruby_src_path"
423
486
  fi
487
+
488
+ return 0
424
489
  }
425
490
 
426
491
  # Initialize rvm, ensuring that the path and directories are as expected.
@@ -428,36 +493,43 @@ __rvm_initialize() {
428
493
  rvm_ruby_load_path="."
429
494
  rvm_ruby_require=""
430
495
 
431
- __rvm_clean_path
432
-
433
- __rvm_conditionally_add_bin_path
434
- export PATH
496
+ __rvm_clean_path ; __rvm_conditionally_add_bin_path ; export PATH
435
497
 
436
498
  \mkdir -p "$rvm_src_path" "$rvm_bin_path" "$rvm_archives_path" "$rvm_gems_path" "$rvm_tmp_path" "$rvm_repo_path"
499
+
500
+ return 0
437
501
  }
438
502
 
439
503
  # Update rubygems or binscripts based on CLI selection.
440
504
  __rvm_update() {
441
505
  __rvm_pushpop $rvm_path
442
- if [[ "$rvm_head_flag" == "1" ]] || [[ -n "$rvm_self_flag" ]] || [[ "update" = "$rvm_action" ]] || [[ -n "$rvm_update_flag" ]] ; then
506
+
507
+ if [[ ${rvm_head_flag:-0} -eq 1 || ${rvm_self_flag:-0} -eq 1 || "update" = "${rvm_action:-""}" || ${rvm_update_flag:-0} -eq 1 ]] ; then
443
508
  __rvm_version
444
509
  __rvm_update_rvm
445
510
  fi
446
- [[ -n "$rvm_bin_flag" ]] && __rvm_bin_scripts
511
+
512
+ [[ ${rvm_bin_flag:-0} -eq 1 ]] && __rvm_bin_scripts
513
+
447
514
  # Update to the latest rubygems.
448
- [[ -n "$rvm_rubygems_flag" ]] && "$rvm_scripts_path/rubygems" current
515
+ [[ ${rvm_rubygems_flag:-0} -eq 1 ]] && "$rvm_scripts_path/rubygems" current
449
516
 
450
517
  unset rvm_update_flag rvm_action rvm_self_flag rvm_ruby_revision rvm_bin_flag rvm_rubygems_flag
518
+
451
519
  __rvm_pushpop
520
+
521
+ return 0
452
522
  }
453
523
 
454
524
  # Update rvm using rubygems
455
525
  # If --head was specified, update from git repository master branch.
456
526
  __rvm_update_rvm() {
527
+
457
528
  \mkdir -p "$rvm_src_path"
529
+
458
530
  __rvm_pushpop "$rvm_src_path"
459
531
 
460
- if [[ "$rvm_head_flag" == "1" ]] ; then
532
+ if [[ ${rvm_head_flag:-0} -eq 1 ]] ; then
461
533
  if [[ -d "$rvm_src_path/rvm/.git" ]] ; then
462
534
  builtin cd "$rvm_src_path/rvm/" && git pull origin master && ./scripts/install
463
535
  else
@@ -474,34 +546,50 @@ __rvm_update_rvm() {
474
546
  fi
475
547
 
476
548
  __rvm_pushpop
549
+
477
550
  rvm_hook="after_update" ; source "$rvm_scripts_path/hook"
551
+
552
+ return 0
478
553
  }
479
554
 
480
555
  __rvm_reboot() {
481
556
  "$rvm_scripts_path/log" "warn" "Do you wish to reboot rvm? ('yes', or 'no')"
557
+
558
+ local response="no"
559
+
482
560
  read response
561
+
483
562
  if [[ "yes" = "$response" ]] ; then
484
563
  builtin cd $rvm_path
564
+
485
565
  __rvm_reset
566
+
486
567
  mv "$rvm_path/archives" "$HOME/.archives"
568
+
487
569
  if [[ "/" = "$rvm_path" ]] ; then
488
570
  "$rvm_scripts_path/log" "error" "remove '/' ?!... NO!"
489
571
  else
490
572
  if [[ -d "$rvm_path" ]] ; then \rm -rf "$rvm_path/" ; fi
491
573
  fi
574
+
492
575
  gem install rvm $rvm_gem_options
576
+
493
577
  __rvm_update_rvm
494
- source $rvm_path/scripts/rvm
578
+
579
+ source "$rvm_path/scripts/rvm"
495
580
  else
496
581
  "$rvm_scripts_path/log" "info" "Carry on then..."
497
- fi ; unset response
582
+ fi
583
+
584
+ return 0
498
585
  }
499
586
 
500
587
  # Create the irbrc for the currently selected ruby installation.
501
588
  __rvm_irbrc() {
502
- if [[ -d "$rvm_ruby_home" ]] && [[ ! -s "$rvm_ruby_irbrc" ]] ; then
589
+ if [[ -d "$rvm_ruby_home" && ! -s "$rvm_ruby_irbrc" ]] ; then
503
590
  \cp "$rvm_scripts_path/irbrc" "$rvm_ruby_irbrc"
504
591
  fi
592
+ return $?
505
593
  }
506
594
 
507
595
  # Push or Pop a directory based on zero or one directory argument provided.
@@ -511,6 +599,8 @@ __rvm_pushpop() {
511
599
  else
512
600
  pushd "$1" > /dev/null 2>&1
513
601
  fi
602
+
603
+ return $?
514
604
  }
515
605
 
516
606
  # Save or restore the rvm's state. This is a toggle action.
@@ -530,20 +620,33 @@ __rvm_state() {
530
620
  __rvm_use
531
621
  unset rvm_state
532
622
  fi
623
+
624
+ return 0
533
625
  }
534
626
 
535
627
  # Output an inspection of selected 'binary' scripts, based on CLI selection.
536
628
  __rvm_inspect() {
629
+ rvm_shebang_flag=${rvm_shebang_flag:-0}
630
+ rvm_env_flag=${rvm_env_flag:-0}
631
+ rvm_path_flag=${rvm_path_flag:-0}
632
+ rvm_head_flag=${rvm_head_flag:-0}
633
+ rvm_tail_flag=${rvm_tail_flag:-0}
634
+ rvm_all_flag=${rvm_all_flag:-0}
635
+
537
636
  for binary in $rvm_ruby_args ; do
538
637
  actual_file="$(command -v $binary)"
638
+
539
639
  "$rvm_scripts_path/log" "info" "$actual_file:"
540
- if [[ -n "$rvm_shebang_flag" ]] ; then head -n 1 < "$actual_file" ; fi
541
- if [[ -n "$rvm_env_flag" ]] ; then awk '/ENV/' < "$actual_file" ; fi
542
- if [[ -n "$rvm_path_flag" ]] ; then awk '/PATH/' < "$actual_file" ; fi
543
- if [[ -n "$rvm_head_flag" ]] ; then head -n 5 < "$actual_file" ; fi
544
- if [[ -n "$rvm_tail_flag" ]] ; then tail -n 5 < "$actual_file" ; fi
545
- if [[ -n "$rvm_all_flag" ]] ; then cat $actual_file ; fi
640
+
641
+ if [[ $rvm_shebang_flag -eq 1 ]] ; then head -n 1 < "$actual_file" ; fi
642
+ if [[ $rvm_env_flag -eq 1 ]] ; then awk '/ENV/' < "$actual_file" ; fi
643
+ if [[ $rvm_path_flag -eq 1 ]] ; then awk '/PATH/' < "$actual_file" ; fi
644
+ if [[ $rvm_head_flag -eq 1 ]] ; then head -n 5 < "$actual_file" ; fi
645
+ if [[ $rvm_tail_flag -eq 1 ]] ; then tail -n 5 < "$actual_file" ; fi
646
+ if [[ $rvm_all_flag -eq 1 ]] ; then cat $actual_file ; fi
546
647
  done
648
+
649
+ return 0
547
650
  }
548
651
 
549
652
  # Attempt to override the Darwin build settings for rubies
@@ -577,6 +680,8 @@ __rvm_make_flags() {
577
680
  # CXXFLAGS="-mmacosx-version-min="$(sw_vers -productVersion | awk -F'.' '{print $1"."$2}')" -isysroot /Developer/SDKs/$rvm_sdk " ; export CXXFLAGS
578
681
  fi
579
682
  fi
683
+
684
+ return 0
580
685
  }
581
686
 
582
687
  __rvm_mono_env() {
@@ -587,23 +692,35 @@ __rvm_mono_env() {
587
692
  export PKG_CONFIG_PATH="$rvm_usr_path/lib/pkgconfig:$PKG_CONFIG_PATH"
588
693
  PATH="$rvm_usr_path/bin:$PATH"
589
694
  builtin hash -r
695
+
696
+ return 0
590
697
  }
591
698
 
592
699
  __rvm_become() {
593
- [[ -n "$1" ]] && rvm_ruby_string="$1"
700
+ local string="$1"
701
+
702
+ [[ -n "$string" ]] && rvm_ruby_string="$string"
703
+
594
704
  { __rvm_ruby_string && __rvm_select && __rvm_use; } > /dev/null 2>&1
705
+
706
+ return 0
595
707
  }
596
708
 
597
709
  __rvm_ensure_has_environment_files() {
598
710
  local environment_identifier="$(__rvm_environment_identifier)"
711
+
599
712
  local file_name="${rvm_environments_path}/$environment_identifier"
600
713
 
601
714
  if [[ ! -s "$file_name" ]] ; then
602
715
  \mkdir -p "${rvm_environments_path}"
716
+
603
717
  echo "export PATH=\"${rvm_ruby_gem_home}/bin:${rvm_ruby_global_gems_path}/bin:${rvm_ruby_home}/bin:${rvm_bin_path}:\$PATH\"" > "$file_name"
718
+
604
719
  for variable in RUBY_VERSION GEM_HOME GEM_PATH BUNDLE_PATH MY_RUBY_HOME IRBRC rvm_ruby_string rvm_gemset_name MAGLEV_HOME ; do
605
720
  eval "export $variable"
721
+
606
722
  eval "value=\$${variable}"
723
+
607
724
  if [[ -n "$value" ]] ; then
608
725
  printf "${variable}='$value'\nexport ${variable}\n" >> "$file_name"
609
726
  else
@@ -612,28 +729,37 @@ __rvm_ensure_has_environment_files() {
612
729
  done ; unset variable value
613
730
  fi ; unset file_name
614
731
 
732
+ local directory_name=""
733
+ local wrapper_identifier=""
615
734
  # Next, ensure we have default wrapper files. Also, prevent it from recursing.
616
- if [[ -z "$rvm_creating_default_wrappers" ]]; then
735
+ if [[ ${rvm_creating_default_wrappers:-0} -eq 1 ]]; then
617
736
  # We need to generate wrappers for both the default gemset and the global gemset.
618
737
  for wrapper_identifier in "$environment_identifier" "${environment_identifier}@global" ; do
619
- rvm_creating_default_wrappers=1
620
- directory_name="$rvm_wrappers_path/$wrapper_identifier"
621
- if [[ ! -L "$directory_name" && ! -d "$directory_name" ]]; then
622
- \mkdir -p "$directory_name"
623
- "$rvm_scripts_path/wrapper" "$wrapper_identifier" &> /dev/null
624
- fi
625
- unset rvm_creating_default_wrappers directory_name
626
- done; unset wrapper_identifier
738
+
739
+ rvm_creating_default_wrappers=1
740
+
741
+ directory_name="$rvm_wrappers_path/$wrapper_identifier"
742
+
743
+ if [[ ! -L "$directory_name" && ! -d "$directory_name" ]]; then
744
+ \mkdir -p "$directory_name"
745
+
746
+ "$rvm_scripts_path/wrapper" "$wrapper_identifier" &> /dev/null
747
+ fi
748
+ rvm_creating_default_wrappers=0
749
+ done
627
750
  fi
751
+ return 0
628
752
  }
629
753
 
630
754
  # Strip whitespace and normalize it all.
631
755
  __rvm_strip() {
632
756
  sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//' -e 's/[[:space:]]\{1,\}/ /g'
757
+ return $?
633
758
  }
634
759
 
635
760
  __rvm_using_gemset_globalcache() {
636
761
  "$rvm_scripts_path/db" "$rvm_config_path/user" "use_gemset_globalcache" | \grep -q '^true$'
762
+ return $?
637
763
  }
638
764
 
639
765
  __rvm_current_gemcache_dir() {
@@ -642,62 +768,85 @@ __rvm_current_gemcache_dir() {
642
768
  else
643
769
  echo "${rvm_ruby_gem_home:-"$GEM_HOME"}/cache"
644
770
  fi
771
+ return 0
645
772
  }
646
773
 
647
774
  __rvm_Answer_to_the_Ultimate_Question_of_Life_the_Universe_and_Everything() {
648
775
  for index in {1..750} ; do sleep 0.25 ; echo -n '.' ; done ; printf "%d" 0x2A ; echo
776
+ return 0
649
777
  }
650
778
 
651
779
  __rvm_ultimate_question() {
652
- printf "\nI do not know the Ultimate Question, "
653
- printf "\nhowever I can help you build a more "
654
- printf "\npowerful Ruby which can compute the "
655
- printf "\nUltimate Question.\n"
780
+ printf "
781
+ I do not know the Ultimate Question,
782
+ however I can help you build a more
783
+ powerful Ruby which can compute the
784
+ Ultimate Question.
785
+ "
786
+ return 0
656
787
  }
657
788
 
658
789
  __rvm_load_env_file() {
659
- if [[ -f "$rvm_environments_path/$1" ]]; then
790
+ local string="$1"
791
+ if [[ -f "$rvm_environments_path/$string" ]]; then
660
792
  # Restore the path to it's state minus rvm
661
793
  __rvm_remove_rvm_from_path
662
- \. "$rvm_environments_path/$1"
794
+
795
+ # source the environment file
796
+ \. "$rvm_environments_path/$string"
797
+
798
+ # clear the PATH cache
663
799
  builtin hash -r
800
+ elif [[ -n "$string" ]] ; then
801
+ rvm "$string"
664
802
  else
665
- rvm use "$1" >/dev/null 2>&1
803
+ : # TODO: This should have some error handling in the context.
666
804
  fi
805
+ return 0
667
806
  }
668
807
 
669
808
  __rvm_md5_for() {
670
809
  if command -v md5 > /dev/null; then
671
810
  echo "$1" | md5
672
- else
811
+ elif command -v md5sum > /dev/null ; then
673
812
  echo "$1" | md5sum | awk '{print $1}'
813
+ else
814
+ "$rvm_path/scripts/log" "error" "Neither md5 nor md5sum were found in the PATH"
815
+ return 1
674
816
  fi
817
+
818
+ return 0
675
819
  }
676
820
 
677
821
  __rvm_rvmrc_key() {
678
822
  __rvm_md5_for "$1"
823
+ return $?
679
824
  }
680
825
 
681
826
  __rvm_reset_rvmrc_trust() {
682
827
  touch "$rvm_config_path/rvmrcs"
683
828
  "$rvm_scripts_path/db" "$rvm_config_path/rvmrcs" "$(__rvm_rvmrc_key "$1")" "delete" >/dev/null 2>&1
829
+ return $?
684
830
  }
685
831
 
686
832
  __rvm_trust_rvmrc() {
687
833
  touch "$rvm_config_path/rvmrcs"
688
834
  __rvm_reset_rvmrc_trust "$1"
689
835
  "$rvm_scripts_path/db" "$rvm_config_path/rvmrcs" "$(__rvm_rvmrc_key "$1")" "1" >/dev/null 2>&1
836
+ return $?
690
837
  }
691
838
 
692
839
  __rvm_untrust_rvmrc() {
693
840
  touch "$rvm_config_path/rvmrcs"
694
841
  __rvm_reset_rvmrc_trust "$1"
695
842
  "$rvm_scripts_path/db" "$rvm_config_path/rvmrcs" "$(__rvm_rvmrc_key "$1")" "0" >/dev/null 2>&1
843
+ return $?
696
844
  }
697
845
 
698
846
  __rvm_rvmrc_stored_trust() {
699
847
  touch "$rvm_config_path/rvmrcs"
700
848
  "$rvm_scripts_path/db" "$rvm_config_path/rvmrcs" "$(__rvm_rvmrc_key "$1")"
849
+ return $?
701
850
  }
702
851
 
703
852
  __rvm_rvmrc_tools() {
@@ -728,13 +877,14 @@ __rvm_rvmrc_tools() {
728
877
  fi
729
878
  ;;
730
879
  load)
731
- rvm_rvmrc_cwd="" rvm_trust_rvmrcs=1 __rvm_project_rvmrc "$(dirname "$rvmrc_path")"
880
+ rvm_rvmrc_cwd="" rvm_trust_rvmrcs=1 __rvm_project_rvmrc "$(dirname "$rvmrc_path")"
732
881
  ;;
733
882
  *)
734
883
  echo "Usage: rvm rvmrc {trust,untrust,trusted,load,reset}"
735
884
  return 1
736
885
  ;;
737
886
  esac
887
+ return $?
738
888
  }
739
889
 
740
890
  __rvm_check_rvmrc_trustworthiness() {
@@ -746,13 +896,15 @@ __rvm_check_rvmrc_trustworthiness() {
746
896
  else
747
897
  [[ "$value" = "1" ]]
748
898
  fi
899
+ return $?
749
900
  }
750
901
 
751
902
  __rvm_ask_to_trust() {
752
903
  [[ -n "$rvm_promptless" ]] && return 2
753
904
  printf "
754
905
  ============================================================
755
- RVM has encountered a new untrusted .rvmrc file containing:
906
+ RVM has encountered a not yet trusted .rvmrc file in the
907
+ current working directory which contains the following code:
756
908
  ============================================================
757
909
 
758
910
  $(cat $1)
@@ -789,17 +941,24 @@ $(cat $1)
789
941
  # Checks the rvmrc for the given directory. Note that if
790
942
  # argument is passed, it will be used instead of pwd.
791
943
  __rvm_project_rvmrc() {
944
+ declare -i rvm_project_rvmrc_default=${rvm_project_rvmrc_default:-0}
945
+ declare rvm_rvmrc_cwd="${rvm_rvmrc_cwd:-""}"
946
+ declare rvm_previous_environment="${rvm_previous_environment:-""}"
947
+
792
948
  local cwd
949
+
793
950
  # Get the first argument or the pwd.
794
951
  cwd="${1:-"$PWD"}"
795
952
  while : ; do
796
953
  if [[ -z "$cwd" || "$HOME" = "$cwd" || "/" = "$cwd" ]] ; then
797
954
  if [[ -n "$rvm_rvmrc_cwd" ]] ; then
798
- if [[ "$rvm_project_rvmrc_default" = "1" ]]; then
955
+ if [[ $rvm_project_rvmrc_default -eq 1 ]]; then
799
956
  __rvm_load_env_file "default"
800
957
  elif [[ -n "$rvm_previous_environment" ]] ; then
801
958
  __rvm_load_env_file "$rvm_previous_environment"
802
- fi ; unset rvm_rvmrc_cwd rvm_previous_environment
959
+ fi
960
+ rvm_rvmrc_cwd=""
961
+ rvm_previous_environment=""
803
962
  fi
804
963
  break
805
964
  else
@@ -822,6 +981,7 @@ __rvm_project_rvmrc() {
822
981
  fi
823
982
  fi
824
983
  done
984
+ return $?
825
985
  }
826
986
 
827
987
  __rvm_record_install() {
@@ -834,17 +994,18 @@ __rvm_record_install() {
834
994
  \grep -v "^$recorded_ruby_name " < "$rvm_install_record_file" > "$rvm_install_record_file.tmp"
835
995
  echo "$rvm_install_command" >> "$rvm_install_record_file.tmp"
836
996
  \rm -f "$rvm_install_record_file"
837
- mv "$rvm_install_record_file.tmp" "$rvm_install_record_file"
997
+ \mv "$rvm_install_record_file.tmp" "$rvm_install_record_file"
838
998
  }
839
999
 
840
1000
  __rvm_remove_install_record() {
841
1001
  local recorded_ruby_name="$($rvm_scripts_path/tools strings "$1")"
842
1002
  local rvm_install_record_file="$rvm_config_path/installs"
843
1003
  if [[ -s "$rvm_install_record_file" ]]; then
844
- mv "$rvm_install_record_file" "$rvm_install_record_file.tmp"
1004
+ \mv "$rvm_install_record_file" "$rvm_install_record_file.tmp"
845
1005
  \grep -v "^$recorded_ruby_name " < "$rvm_install_record_file.tmp" > "$rvm_install_record_file"
846
1006
  \rm -f "$rvm_install_record_file.tmp"
847
1007
  fi
1008
+ return 0
848
1009
  }
849
1010
 
850
1011
  __rvm_recorded_install_command() {
@@ -856,35 +1017,39 @@ __rvm_recorded_install_command() {
856
1017
  else
857
1018
  return 1
858
1019
  fi
1020
+ return $?
859
1021
  }
860
1022
 
861
1023
  __rvm_environment_identifier() {
862
- ruby_string="$(command -v ruby)"
863
-
864
- if [ -n "$ruby_string" ] && echo "$ruby_string" | \grep -q -F "$rvm_rubies_path"; then
865
- echo "$GEM_HOME" | xargs basename
866
- else
867
- echo "system"
868
- fi ; unset ruby_string
1024
+ local path
1025
+ local string
1026
+ path="$(command -v ruby)"
1027
+ string="${path//*rubies\//}"
1028
+ string="${string//\/*/}"
1029
+ echo "${string:-system}"
1030
+ return $?
869
1031
  }
870
1032
 
871
1033
  __rvm_expand_ruby_string() {
872
- if [[ -z "$1" || "$1" = "all" ]]; then
1034
+ local string="$1"
1035
+ if [[ -z "$string" || "$string" = "all" ]]; then
873
1036
  "$rvm_scripts_path/list" strings | tr ' ' "\n" | __rvm_strip
874
- elif [[ "$1" = "all-gemsets" ]]; then
1037
+ elif [[ "$string" = "all-gemsets" ]]; then
875
1038
  "$rvm_scripts_path/list" gemsets strings | __rvm_strip
876
- elif [[ "$1" = "default-with-rvmrc" || "$1" = "rvmrc" ]]; then
1039
+ elif [[ "$string" = "default-with-rvmrc" || "$string" = "rvmrc" ]]; then
877
1040
  "$rvm_scripts_path/tools" path-identifier "$PWD"
878
- elif [[ "$1" == "all-rubies" || "$1" = "rubies" ]]; then
1041
+ elif [[ "$string" == "all-rubies" || "$string" = "rubies" ]]; then
879
1042
  "$rvm_scripts_path/list" rubies strings | __rvm_strip
880
- elif [[ "$1" == "current-ruby" || "$1" = "gemsets" ]]; then
881
- local current_ruby="$(__rvm_environment_identifier | awk -F"$rvm_gemset_separator" '{print $1}')"
1043
+ elif [[ "$string" == "current-ruby" || "$string" = "gemsets" ]]; then
1044
+ local current_ruby="$(__rvm_environment_identifier | awk -F"$rvm_gemset_separator" '{print $string}')"
882
1045
  rvm_silence_logging=1 "$rvm_scripts_path/gemsets" list | sed "s/^/$current_ruby$rvm_gemset_separator/" | __rvm_strip
883
- elif [[ "$1" = "current" ]]; then
1046
+ elif [[ "$string" = "current" ]]; then
884
1047
  __rvm_environment_identifier
885
- elif [[ "$1" = "aliases" ]]; then
886
- awk -F= '{print $1}' < "$rvm_config_path/alias" | __rvm_strip
1048
+ elif [[ "$string" = "aliases" ]]; then
1049
+ awk -F= '{print $string}' < "$rvm_config_path/alias" | __rvm_strip
887
1050
  else
888
- echo "$1" | tr "," "\n" | __rvm_strip
1051
+ echo "$string" | tr "," "\n" | __rvm_strip
889
1052
  fi
1053
+ return $?
890
1054
  }
1055
+