rvm 1.0.2 → 1.0.3

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