rvm 0.1.27 → 0.1.29
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/README +50 -44
- data/binscripts/rvm +13 -4
- data/binscripts/rvm-prompt +3 -2
- data/config/db +7 -7
- data/config/md5 +11 -43
- data/help/alias +46 -0
- data/help/benchmark +17 -0
- data/help/debug +8 -0
- data/help/fetch +5 -0
- data/help/gem +0 -0
- data/help/gemdir +0 -0
- data/help/gemset +0 -0
- data/help/implode +0 -0
- data/help/info +0 -0
- data/help/install +0 -0
- data/help/list +0 -0
- data/help/monitor +0 -0
- data/help/notes +0 -0
- data/help/package +0 -0
- data/help/rake +0 -0
- data/help/remove +0 -0
- data/help/reset +0 -0
- data/help/ruby +0 -0
- data/help/rvmrc +0 -0
- data/help/specs +0 -0
- data/help/srcdir +0 -0
- data/help/tests +0 -0
- data/help/uninstall +0 -0
- data/help/update +0 -0
- data/help/use +0 -0
- data/install +21 -9
- data/lib/VERSION.yml +1 -1
- data/rvm.gemspec +30 -5
- data/scripts/cli +108 -79
- data/scripts/db +2 -2
- data/scripts/fetch +2 -2
- data/scripts/gemsets +16 -12
- data/scripts/initialize +2 -1
- data/scripts/install +21 -9
- data/scripts/irbrc.rb +3 -2
- data/scripts/log +1 -1
- data/scripts/manage +62 -49
- data/scripts/monitor +4 -5
- data/scripts/notes +13 -7
- data/scripts/package +34 -5
- data/scripts/rvm +10 -2
- data/scripts/rvm-install +21 -9
- data/scripts/selector +25 -17
- data/scripts/set +7 -9
- data/scripts/update +21 -9
- data/scripts/utility +95 -73
- metadata +38 -6
data/scripts/package
CHANGED
@@ -4,8 +4,20 @@
|
|
4
4
|
# ruby dependency packages:
|
5
5
|
#
|
6
6
|
|
7
|
+
for rvmrc in /etc/rvmrc $HOME/.rvmrc ; do
|
8
|
+
if [[ -f "$rvmrc" ]] ; then
|
9
|
+
if grep -q '^\s*rvm .*$' $rvmrc ; then
|
10
|
+
$rvm_scripts_path/log "error" "$rvmrc is for rvm settings only.\nrvm CLI may NOT be called from within $rvmrc. \nSkipping the loading of $rvmrc"
|
11
|
+
return 1
|
12
|
+
else
|
13
|
+
source "$rvmrc"
|
14
|
+
fi
|
15
|
+
fi
|
16
|
+
done
|
17
|
+
|
7
18
|
source $rvm_scripts_path/initialize
|
8
19
|
source $rvm_scripts_path/utility
|
20
|
+
__rvm_load_rvmrc
|
9
21
|
|
10
22
|
trap "rm -f $rvm_tmp_path/$$* > /dev/null 2>&1 ; exit" 0 1 2 3 15
|
11
23
|
if [[ ! -z "$rvm_trace_flag" ]] ; then set -x ; export rvm_trace_flag ; fi
|
@@ -37,7 +49,7 @@ install_package() {
|
|
37
49
|
|
38
50
|
builtin cd "$rvm_src_path/$package-$version"
|
39
51
|
|
40
|
-
__rvm_run "$package/configure" "${configure:-"./configure --prefix=$rvm_usr_path"} $configure_flags" "Configuring $package in $rvm_src_path/$package-$version."
|
52
|
+
__rvm_run "$package/configure" "${configure:-"./configure --prefix=${prefix_path:-"$rvm_usr_path"}"} $configure_flags" "Configuring $package in $rvm_src_path/$package-$version."
|
41
53
|
|
42
54
|
unset configure_flags
|
43
55
|
|
@@ -79,20 +91,27 @@ openssl() {
|
|
79
91
|
else
|
80
92
|
export openssl_os="os/compiler darwin-i386-cc"
|
81
93
|
fi
|
82
|
-
package="openssl" ; version="0.9.
|
94
|
+
package="openssl" ; version="0.9.8n" ; archive_format="tar.gz"
|
83
95
|
package_url="http://www.openssl.org/source"
|
84
96
|
configure="./config --prefix=$rvm_usr_path zlib no-asm no-krb5 shared"
|
85
97
|
install_package
|
86
98
|
}
|
87
99
|
|
88
100
|
zlib() {
|
89
|
-
package="zlib" ; version="1.2.
|
101
|
+
package="zlib" ; version="1.2.5" ; archive_format="tar.gz"
|
90
102
|
package_url="http://www.zlib.net"
|
91
103
|
install_package
|
92
104
|
}
|
93
105
|
|
94
|
-
|
106
|
+
autoconf() {
|
107
|
+
package_url="ftp.gnu.org/gnu/autoconf"
|
108
|
+
package="autoconf" ; version="2.65" ; archive_format="tar.gz"
|
109
|
+
|
110
|
+
prefix_path="${rvm_symlink_path:-"${rvm_path:-"$HOME/.rvm"}/bin"}"
|
111
|
+
install_package
|
112
|
+
}
|
95
113
|
|
114
|
+
ncurses() {
|
96
115
|
package_url="http://ftp.gnu.org/pub/gnu/ncurses"
|
97
116
|
package="ncurses" ; version="5.7" ; archive_format="tar.gz"
|
98
117
|
configure_flags="--with-shared --disable-rpath --without-debug --without-ada --enable-safe-sprintf --enable-sigwinch --without-progs"
|
@@ -111,6 +130,16 @@ gettext() {
|
|
111
130
|
install_package
|
112
131
|
}
|
113
132
|
|
133
|
+
libxml2() {
|
134
|
+
package_url="ftp://xmlsoft.org/libxml2/"
|
135
|
+
package="libxml2" ; version="2.7.3" ; archive_format="tar.gz"
|
136
|
+
if [[ "Darwin" = "$(uname)" ]] ; then
|
137
|
+
configure="./configure --prefix=${rvm_usr_path} --build=i686-apple-darwin$(uname -r) --host=i686-apple-darwin$(uname -r)"
|
138
|
+
fi
|
139
|
+
install_package
|
140
|
+
unset prefix_path
|
141
|
+
}
|
142
|
+
|
114
143
|
glib() {
|
115
144
|
package="glib" ; version="2.23.1" ; archive_format="tar.gz"
|
116
145
|
package_url="http://ftp.gnome.org/pub/gnome/sources/glib/2.23"
|
@@ -146,7 +175,7 @@ llvm() {
|
|
146
175
|
}
|
147
176
|
|
148
177
|
if [[ ! -z "$library" ]] ; then
|
149
|
-
if [[ " readline iconv curl openssl zlib ncurses pkgconfig gettext glib mono llvm " =~ "$library" ]] ; then
|
178
|
+
if [[ " readline iconv curl openssl zlib autoconf ncurses pkgconfig gettext glib mono llvm libxml2 " =~ "$library" ]] ; then
|
150
179
|
${library}
|
151
180
|
else
|
152
181
|
$rvm_scripts_path/log "error" "Package '${library}' is unknown."
|
data/scripts/rvm
CHANGED
@@ -9,8 +9,16 @@ if [[ "$rvm_loaded_flag" != "1" ]] || [[ "$rvm_reload_flag" = "1" ]] ; then
|
|
9
9
|
|
10
10
|
mkdir -p $HOME/.gem/cache
|
11
11
|
|
12
|
-
|
13
|
-
|
12
|
+
for rvmrc in /etc/rvmrc $HOME/.rvmrc ; do
|
13
|
+
if [[ -f "$rvmrc" ]] ; then
|
14
|
+
if grep -q '^\s*rvm .*$' $rvmrc ; then
|
15
|
+
echo -e "Error: $rvmrc is for rvm settings only.\nrvm CLI may NOT be called from within $rvmrc. \nSkipping the loading of $rvmrc"
|
16
|
+
return 1
|
17
|
+
else
|
18
|
+
source "$rvmrc"
|
19
|
+
fi
|
20
|
+
fi
|
21
|
+
done
|
14
22
|
|
15
23
|
if [[ -z "$rvm_prefix" ]] ; then
|
16
24
|
if [[ "root" = "$(whoami)" ]] ; then
|
data/scripts/rvm-install
CHANGED
@@ -29,7 +29,7 @@ spinner() {
|
|
29
29
|
index=$((($spinner_counter % 8)))
|
30
30
|
echo -e -n "\r${array[$index]}"
|
31
31
|
let "spinner_counter=spinner_counter+1"
|
32
|
-
|
32
|
+
command -v perl > /dev/null 2>&1 && perl -e 'sleep 0.5'
|
33
33
|
}
|
34
34
|
|
35
35
|
if echo "$*" | grep -q 'trace' ; then echo "$*" ; env | grep '^rvm_' ; set -x ; fi
|
@@ -56,6 +56,7 @@ fi
|
|
56
56
|
if [[ -z "$rvm_path" ]] ; then rvm_path="${rvm_prefix}rvm" ; fi
|
57
57
|
|
58
58
|
source scripts/initialize
|
59
|
+
|
59
60
|
if grep -q 'scripts/rvm' $HOME/.bash* || grep -q 'scripts/rvm' $HOME/.zsh*; then
|
60
61
|
if [[ -d "$rvm_path" ]] && [[ -s "${rvm_path}/scripts/rvm" ]] ; then
|
61
62
|
export upgrade_flag=1
|
@@ -102,7 +103,7 @@ fi
|
|
102
103
|
|
103
104
|
spinner
|
104
105
|
|
105
|
-
mkdir -p $rvm_archives_path $rvm_src_path $rvm_log_path $rvm_bin_path $rvm_gems_path $rvm_rubies_path $rvm_config_path $rvm_hooks_path $rvm_tmp_path
|
106
|
+
mkdir -p $rvm_archives_path $rvm_src_path $rvm_log_path $rvm_bin_path $rvm_gems_path $rvm_rubies_path $rvm_config_path $rvm_hooks_path $rvm_tmp_path
|
106
107
|
|
107
108
|
for file in README LICENCE ; do
|
108
109
|
spinner
|
@@ -112,7 +113,7 @@ done
|
|
112
113
|
#
|
113
114
|
# Scripts
|
114
115
|
#
|
115
|
-
for dir_name in config scripts examples lib hooks ; do
|
116
|
+
for dir_name in config scripts examples lib hooks help ; do
|
116
117
|
spinner
|
117
118
|
mkdir -p "$rvm_path/$dir_name"
|
118
119
|
if [[ -d "$source_path/$dir_name" ]] ; then
|
@@ -265,17 +266,28 @@ if [[ "$upgrade_flag" -eq 1 ]] ; then
|
|
265
266
|
else
|
266
267
|
if [[ "root" != "$(whoami)" ]] ; then
|
267
268
|
echo -e "\n$(tput setaf 1)You must now finish the install manually:$(tput sgr0)"
|
268
|
-
echo -e "\n1) Place the folowing line at the end of your shell's loading files(.bashrc
|
269
|
+
echo -e "\n1) Place the folowing line at the end of your shell's loading files(.bashrc or .bash_profile for bash and .zshrc for zsh), after all path/variable settings:"
|
269
270
|
echo -e "\n if [[ -s $rvm_path/scripts/rvm ]] ; then source $rvm_path/scripts/rvm ; fi"
|
270
271
|
echo -e "\n2) Ensure that there is no 'return' from inside the .bashrc file. (otherwise rvm will be prevented from working properly)."
|
271
|
-
echo -e "\n This means that if you see '[ -z "$PS1" ] && return' then you must
|
272
|
-
echo -e "\n
|
273
|
-
echo -e "\n
|
272
|
+
echo -e "\n This means that if you see '[ -z "$PS1" ] && return' then you must change this line to:"
|
273
|
+
echo -e "\n if [[ ! -z "$PS1" ]] ; then"
|
274
|
+
echo -e "\n ... original content that was below the && return line ..."
|
275
|
+
echo -e "\n fi # <= be sure to close the if."
|
276
|
+
echo -e "\n #EOF .bashrc"
|
277
|
+
echo -e "\n Be absolutely *sure* to REMOVE the '&& return'."
|
274
278
|
echo -e "\n If you wish to DRY up your config you can 'source ~/.bashrc' at the top of your .bash_profile."
|
275
|
-
echo -e "\
|
279
|
+
echo -e "\n placing all non-interactive items in the .bashrc"
|
280
|
+
echo -e "\n3) Then $(tput setaf 1)CLOSE THIS SHELL$(tput sgr0) and open a new one in order to use rvm.\n"
|
276
281
|
fi
|
277
282
|
if [[ -s $HOME/.bashrc ]] && grep '&& return' $HOME/.bashrc ; then
|
278
|
-
echo -e "\n\nWARNING: you have a 'return' statement in your .bashrc, likely this will cause untold havoc.
|
283
|
+
echo -e "\n\nWARNING: you have a 'return' statement in your .bashrc, likely this will cause untold havoc.
|
284
|
+
This means that if you see '[ -z "$PS1" ] && return' then you must change this line to:
|
285
|
+
if [[ ! -z "$PS1" ]] ; then
|
286
|
+
... original content that was below the && return line ...
|
287
|
+
fi # <= be sure to close the if.
|
288
|
+
#EOF .bashrc
|
289
|
+
|
290
|
+
If you have any questions about this please visit #rvm on irc.freenode.net.\n"
|
279
291
|
fi
|
280
292
|
echo -e "Installation of RVM to $rvm_path/ is complete.\n\n"
|
281
293
|
fi
|
data/scripts/selector
CHANGED
@@ -31,7 +31,7 @@ __rvm_select() {
|
|
31
31
|
else
|
32
32
|
__rvm_db "macruby_version" "rvm_ruby_version"
|
33
33
|
__rvm_db "macruby_url" "rvm_url"
|
34
|
-
rvm_ruby_package_name="MacRuby%
|
34
|
+
rvm_ruby_package_name="MacRuby%20${rvm_ruby_version}.zip"
|
35
35
|
rvm_ruby_package_file="$rvm_ruby_package_name"
|
36
36
|
rvm_url="$rvm_url/$rvm_ruby_package_name"
|
37
37
|
fi
|
@@ -68,12 +68,14 @@ __rvm_select() {
|
|
68
68
|
rvm_ruby_repo_url="${rvm_ruby_repo_url:-$(__rvm_db "jruby_repo_url")}"
|
69
69
|
rvm_url="${rvm_ruby_repo_url:-$(__rvm_db "jruby_repo_url")}"
|
70
70
|
else
|
71
|
-
rvm_archive_extension="
|
71
|
+
rvm_archive_extension="tar.gz"
|
72
72
|
rvm_ruby_version="${rvm_ruby_version:-"$(__rvm_db "jruby_version")"}"
|
73
|
+
jruby_url="$(__rvm_db "jruby_url")"
|
73
74
|
rvm_ruby_package_file="${rvm_ruby_interpreter}-bin-${rvm_ruby_version}"
|
74
75
|
rvm_ruby_package_name="${rvm_ruby_interpreter}-${rvm_ruby_version}"
|
75
76
|
rvm_ruby_string="${rvm_ruby_interpreter}-${rvm_ruby_version}"
|
76
|
-
rvm_url="
|
77
|
+
rvm_url="${jruby_url}/${rvm_ruby_version}/${rvm_ruby_package_file}.tar.gz"
|
78
|
+
unset jruby_url
|
77
79
|
fi
|
78
80
|
alias jruby_ng="jruby --ng"
|
79
81
|
alias jruby_ng_server="jruby --ng-server"
|
@@ -104,20 +106,20 @@ __rvm_select() {
|
|
104
106
|
ironruby)
|
105
107
|
unset rvm_ruby_patch_level
|
106
108
|
if [[ "$rvm_head_flag" -eq 1 ]] ; then
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
109
|
+
rvm_ruby_version="head"
|
110
|
+
rvm_ruby_string="${rvm_ruby_interpreter}-${rvm_ruby_version}"
|
111
|
+
rvm_ruby_package_name="${rvm_ruby_string}"
|
112
|
+
rvm_ruby_repo_url="${rvm_ruby_repo_url:-$(__rvm_db "ironruby_repo_url")}"
|
113
|
+
rvm_url="${rvm_ruby_repo_url:-$(__rvm_db "ironruby_repo_url")}"
|
112
114
|
else
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
export rvm_url="$(__rvm_db "ironruby_url")v${rvm_ruby_version}"
|
115
|
+
rvm_archive_extension="zip"
|
116
|
+
rvm_ruby_version=${rvm_ruby_version:-"$(__rvm_db "ironruby_version")"}
|
117
|
+
rvm_ruby_string="${rvm_ruby_interpreter}-${rvm_ruby_version}"
|
118
|
+
rvm_ruby_package_name="${rvm_ruby_interpreter}-${rvm_ruby_version}"
|
119
|
+
rvm_ruby_package_file="${rvm_ruby_interpreter}-${rvm_ruby_version}.${rvm_archive_extension}"
|
120
|
+
rvm_url="$(__rvm_db "ironruby_${rvm_ruby_version}_url")${rvm_ruby_package_file}"
|
120
121
|
fi
|
122
|
+
export rvm_ruby_version rvm_ruby_string rvm_ruby_package_name rvm_ruby_repo_url rvm_url rvm_archive_extension
|
121
123
|
;;
|
122
124
|
|
123
125
|
ree)
|
@@ -164,8 +166,8 @@ __rvm_select() {
|
|
164
166
|
;;
|
165
167
|
|
166
168
|
current)
|
167
|
-
ruby_binary="$(
|
168
|
-
if $rvm_scripts_path/match "$ruby_binary" "rvm" ; then
|
169
|
+
ruby_binary="$(command -v ruby)"
|
170
|
+
if [[ $? -eq 0 ]] && $rvm_scripts_path/match "$ruby_binary" "rvm" ; then
|
169
171
|
rvm_ruby_string="$(dirname "$ruby_binary" | xargs dirname | xargs basename)"
|
170
172
|
else
|
171
173
|
rvm_ruby_interpreter="system"
|
@@ -373,6 +375,12 @@ __rvm_ruby_string() {
|
|
373
375
|
|
374
376
|
__rvm_unset_ruby_variables
|
375
377
|
|
378
|
+
# Alias'd rubies
|
379
|
+
if [[ -z "$alias_name" ]] ; then
|
380
|
+
value="$($rvm_scripts_path/db "$rvm_config_path/alias" "$ruby_string" 2>/dev/null)"
|
381
|
+
if [[ ! -z "$value" ]] ; then ruby_string="$value" ; fi
|
382
|
+
fi
|
383
|
+
|
376
384
|
for string in $(echo $ruby_string | tr '-' ' ') ; do
|
377
385
|
if [[ "head" = "$string" ]] ; then
|
378
386
|
rvm_ruby_revision="head"
|
data/scripts/set
CHANGED
@@ -22,15 +22,13 @@ __rvm_ruby_do() {
|
|
22
22
|
|
23
23
|
binary="$(echo $action | sed 's#do$##')"
|
24
24
|
if [[ -x "$rvm_ruby_home/bin/$binary" ]] ; then
|
25
|
-
rm -f "$rvm_path/gems/cache"
|
26
|
-
ln -nfs "$HOME/.gem/cache" "$rvm_path/gems/cache"
|
27
25
|
binary="$rvm_ruby_home/bin/$binary"
|
28
26
|
elif [[ -x "$rvm_ruby_global_gems_path/bin/$binary" ]] ; then
|
29
27
|
binary="$rvm_ruby_global_gems_path/bin/$binary"
|
30
28
|
elif [[ -x "$rvm_ruby_gem_home/bin/$binary" ]] ; then
|
31
29
|
binary="$rvm_ruby_gem_home/bin/$binary"
|
32
|
-
elif [[ "system" = "$rvm_ruby_string" ]] && [[ -x "$(
|
33
|
-
binary="$(basename $(
|
30
|
+
elif [[ "system" = "$rvm_ruby_string" ]] && [[ -x "$(command -v $binary)" ]] ; then
|
31
|
+
binary="$(basename $(command -v $binary) 2>/dev/null)"
|
34
32
|
else
|
35
33
|
$rvm_scripts_path/log "warn" "'$binary not found for $rvm_ruby_string' either does not exist or is not executable? :("
|
36
34
|
__rvm_unset_ruby_variables
|
@@ -42,7 +40,7 @@ __rvm_ruby_do() {
|
|
42
40
|
rvm_ruby_mode="--$(echo $rvm_ruby_mode | sed 's/^m//')"
|
43
41
|
fi
|
44
42
|
|
45
|
-
load_path="$(dirname $(
|
43
|
+
load_path="$(dirname $(command -v $binary) 2>/dev/null):$rvm_ruby_load_path"
|
46
44
|
# TODO: the else case below should be run if $args =~ /\.rb$/
|
47
45
|
if [[ "ruby" = "$(basename $binary)" ]] && [[ "$rvm_benchmark_flag" -ne 1 ]] ; then
|
48
46
|
if $rvm_scripts_path/match "$args" "\.rb$" ; then
|
@@ -64,7 +62,9 @@ __rvm_ruby_do() {
|
|
64
62
|
touch ./log/$rvm_ruby_string/$action.log ./log/$rvm_ruby_string/$action.error.log
|
65
63
|
eval "$rvm_command" >> ./log/$rvm_ruby_string/$action.log 2>> ./log/$rvm_ruby_string/$action.error.log
|
66
64
|
else
|
67
|
-
|
65
|
+
if [[ "$rvm_verbose_flag" != "0" ]] ; then
|
66
|
+
$rvm_scripts_path/log "info" "$rvm_ruby_string: $($rvm_ruby_home/bin/ruby -v $rvm_ruby_mode | tr "\n" ' ')"
|
67
|
+
fi
|
68
68
|
eval "$rvm_command"
|
69
69
|
fi
|
70
70
|
result=$?
|
@@ -146,7 +146,7 @@ __rvm_json() {
|
|
146
146
|
|
147
147
|
# Loop over a set or all rvm installed rubies to perform some action.
|
148
148
|
# Record the results and report based on CLI selections.
|
149
|
-
|
149
|
+
|
150
150
|
rubies=() ; successes=() ; errors=() ; statuses=()
|
151
151
|
# TODO: Extract the common functionality out of the if below
|
152
152
|
if [[ ! -z "$rvm_ruby_string" ]] ; then
|
@@ -175,5 +175,3 @@ if [[ ! -z "$rvm_json_flag" ]] ; then __rvm_json ; fi
|
|
175
175
|
$rvm_scripts_path/hook "after_do"
|
176
176
|
|
177
177
|
exit ${#errors[*]}
|
178
|
-
#}
|
179
|
-
|
data/scripts/update
CHANGED
@@ -29,7 +29,7 @@ spinner() {
|
|
29
29
|
index=$((($spinner_counter % 8)))
|
30
30
|
echo -e -n "\r${array[$index]}"
|
31
31
|
let "spinner_counter=spinner_counter+1"
|
32
|
-
|
32
|
+
command -v perl > /dev/null 2>&1 && perl -e 'sleep 0.5'
|
33
33
|
}
|
34
34
|
|
35
35
|
if echo "$*" | grep -q 'trace' ; then echo "$*" ; env | grep '^rvm_' ; set -x ; fi
|
@@ -56,6 +56,7 @@ fi
|
|
56
56
|
if [[ -z "$rvm_path" ]] ; then rvm_path="${rvm_prefix}rvm" ; fi
|
57
57
|
|
58
58
|
source scripts/initialize
|
59
|
+
|
59
60
|
if grep -q 'scripts/rvm' $HOME/.bash* || grep -q 'scripts/rvm' $HOME/.zsh*; then
|
60
61
|
if [[ -d "$rvm_path" ]] && [[ -s "${rvm_path}/scripts/rvm" ]] ; then
|
61
62
|
export upgrade_flag=1
|
@@ -102,7 +103,7 @@ fi
|
|
102
103
|
|
103
104
|
spinner
|
104
105
|
|
105
|
-
mkdir -p $rvm_archives_path $rvm_src_path $rvm_log_path $rvm_bin_path $rvm_gems_path $rvm_rubies_path $rvm_config_path $rvm_hooks_path $rvm_tmp_path
|
106
|
+
mkdir -p $rvm_archives_path $rvm_src_path $rvm_log_path $rvm_bin_path $rvm_gems_path $rvm_rubies_path $rvm_config_path $rvm_hooks_path $rvm_tmp_path
|
106
107
|
|
107
108
|
for file in README LICENCE ; do
|
108
109
|
spinner
|
@@ -112,7 +113,7 @@ done
|
|
112
113
|
#
|
113
114
|
# Scripts
|
114
115
|
#
|
115
|
-
for dir_name in config scripts examples lib hooks ; do
|
116
|
+
for dir_name in config scripts examples lib hooks help ; do
|
116
117
|
spinner
|
117
118
|
mkdir -p "$rvm_path/$dir_name"
|
118
119
|
if [[ -d "$source_path/$dir_name" ]] ; then
|
@@ -265,17 +266,28 @@ if [[ "$upgrade_flag" -eq 1 ]] ; then
|
|
265
266
|
else
|
266
267
|
if [[ "root" != "$(whoami)" ]] ; then
|
267
268
|
echo -e "\n$(tput setaf 1)You must now finish the install manually:$(tput sgr0)"
|
268
|
-
echo -e "\n1) Place the folowing line at the end of your shell's loading files(.bashrc
|
269
|
+
echo -e "\n1) Place the folowing line at the end of your shell's loading files(.bashrc or .bash_profile for bash and .zshrc for zsh), after all path/variable settings:"
|
269
270
|
echo -e "\n if [[ -s $rvm_path/scripts/rvm ]] ; then source $rvm_path/scripts/rvm ; fi"
|
270
271
|
echo -e "\n2) Ensure that there is no 'return' from inside the .bashrc file. (otherwise rvm will be prevented from working properly)."
|
271
|
-
echo -e "\n This means that if you see '[ -z "$PS1" ] && return' then you must
|
272
|
-
echo -e "\n
|
273
|
-
echo -e "\n
|
272
|
+
echo -e "\n This means that if you see '[ -z "$PS1" ] && return' then you must change this line to:"
|
273
|
+
echo -e "\n if [[ ! -z "$PS1" ]] ; then"
|
274
|
+
echo -e "\n ... original content that was below the && return line ..."
|
275
|
+
echo -e "\n fi # <= be sure to close the if."
|
276
|
+
echo -e "\n #EOF .bashrc"
|
277
|
+
echo -e "\n Be absolutely *sure* to REMOVE the '&& return'."
|
274
278
|
echo -e "\n If you wish to DRY up your config you can 'source ~/.bashrc' at the top of your .bash_profile."
|
275
|
-
echo -e "\
|
279
|
+
echo -e "\n placing all non-interactive items in the .bashrc"
|
280
|
+
echo -e "\n3) Then $(tput setaf 1)CLOSE THIS SHELL$(tput sgr0) and open a new one in order to use rvm.\n"
|
276
281
|
fi
|
277
282
|
if [[ -s $HOME/.bashrc ]] && grep '&& return' $HOME/.bashrc ; then
|
278
|
-
echo -e "\n\nWARNING: you have a 'return' statement in your .bashrc, likely this will cause untold havoc.
|
283
|
+
echo -e "\n\nWARNING: you have a 'return' statement in your .bashrc, likely this will cause untold havoc.
|
284
|
+
This means that if you see '[ -z "$PS1" ] && return' then you must change this line to:
|
285
|
+
if [[ ! -z "$PS1" ]] ; then
|
286
|
+
... original content that was below the && return line ...
|
287
|
+
fi # <= be sure to close the if.
|
288
|
+
#EOF .bashrc
|
289
|
+
|
290
|
+
If you have any questions about this please visit #rvm on irc.freenode.net.\n"
|
279
291
|
fi
|
280
292
|
echo -e "Installation of RVM to $rvm_path/ is complete.\n\n"
|
281
293
|
fi
|
data/scripts/utility
CHANGED
@@ -26,64 +26,56 @@ is_a_function() { type $1 | head -n 1 | grep -q "function" ; }
|
|
26
26
|
|
27
27
|
# Ouput rvm environment information.
|
28
28
|
__rvm_info() {
|
29
|
-
|
30
29
|
if [[ ! -z "$rvm_ruby_args" ]] ; then
|
31
|
-
|
32
|
-
echo -e $info ; unset info
|
30
|
+
cat < <(rvm_ruby_string="$rvm_ruby_args"; __rvm_select ; __rvm_use ; __rvm_environment_info; echo -e "$environment_info")
|
33
31
|
else
|
34
32
|
__rvm_environment_info
|
33
|
+
echo -e "$environment_info"
|
35
34
|
fi
|
36
|
-
|
37
35
|
}
|
38
36
|
|
39
37
|
__rvm_environment_info() {
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
if [[ ! -z "$ZSH_VERSION" ]] ; then echo -e " shell: \"zsh\"\n version: \"$ZSH_VERSION\"" ; fi
|
44
|
-
if [[ ! -z "$BASH_VERSION" ]] ; then echo -e " shell: \"bash\"\n version: \"$BASH_VERSION\"" ; fi
|
45
|
-
|
46
|
-
cat <<Ruby
|
47
|
-
|
48
|
-
ruby:
|
49
|
-
interpreter: "$(echo $full_version | awk '{print $1}')"
|
50
|
-
version: "$(echo $full_version | awk '{print $2}')"
|
51
|
-
date: "$(echo $full_version | sed 's/^.*(\([0-9]\{4\}\(-[0-9][0-9]\)\{2\}\).*$/\1/')"
|
52
|
-
platform: "$(echo $full_version | sed 's/^.*\[//' | sed 's/\].*$//')"
|
53
|
-
patchlevel: "$(echo $full_version | sed 's/^.*(//' | sed 's/).*$//')"
|
54
|
-
full_version: "$full_version"
|
55
|
-
|
56
|
-
Ruby
|
57
|
-
|
58
|
-
cat <<Homes
|
59
|
-
homes:
|
60
|
-
gem: "${GEM_HOME:-'not set'}"
|
61
|
-
ruby: "${MY_RUBY_HOME:-'not set'}"
|
62
|
-
Homes
|
63
|
-
|
64
|
-
cat <<Binaries
|
65
|
-
binaries:
|
66
|
-
ruby: "$(which ruby 2>/dev/null)"
|
67
|
-
irb: "$(which irb 2>/dev/null)"
|
68
|
-
gem: "$(which gem 2>/dev/null)"
|
69
|
-
rake: "$(which rake 2>/dev/null)"
|
70
|
-
Binaries
|
38
|
+
environment_info="" ; full_version=""
|
39
|
+
ruby=$(command -v ruby)
|
40
|
+
if [[ $? -eq 0 ]] && [[ -x "$ruby" ]] ; then full_version="$($ruby -v)" ; fi
|
71
41
|
|
72
|
-
|
73
|
-
|
74
|
-
environment:
|
75
|
-
GEM_HOME: "$GEM_HOME"
|
76
|
-
GEM_PATH: "$GEM_PATH"
|
77
|
-
BUNDLE_PATH: "$BUNDLE_PATH"
|
78
|
-
MY_RUBY_HOME: "$MY_RUBY_HOME"
|
79
|
-
IRBRC: "$IRBRC"
|
80
|
-
Environment
|
81
|
-
|
82
|
-
gemset="$(echo $GEM_HOME | awk -F${rvm_gemset_separator:-'@'} '{print $2}')"
|
83
|
-
echo -e " gemset: \"$gemset\"\n"
|
84
|
-
|
85
|
-
if [[ ! -z "$MAGLEV_HOME" ]] ; then info="$info\n MAGLEV_HOME: \"$MAGLEV_HOME\"" ; fi
|
42
|
+
environment_info="$environment_info\nsystem:\n uname: \"$(uname -a)\""
|
86
43
|
|
44
|
+
if [[ ! -z "$ZSH_VERSION" ]] ; then
|
45
|
+
environment_info="$environment_info\n shell: \"zsh\"\n version: \"$ZSH_VERSION\""
|
46
|
+
fi
|
47
|
+
if [[ ! -z "$BASH_VERSION" ]] ; then
|
48
|
+
environment_info="$environment_info\n shell: \"bash\"\n version: \"$BASH_VERSION\""
|
49
|
+
fi
|
50
|
+
environment_info="$environment_info\n\nrvm:"
|
51
|
+
environment_info="$environment_info\n type: \"$(head -n 1 < <(type rvm))\""
|
52
|
+
environment_info="$environment_info\n version: \"$(__rvm_version | tr "\n" ' ' | sed 's/^[[:space:]]*//' | sed 's/[[:space:]]*$//')\""
|
53
|
+
environment_info="$environment_info\n\nruby:"
|
54
|
+
environment_info="$environment_info\n interpreter: \"$(echo "${full_version}" | awk '{print $1}')\""
|
55
|
+
environment_info="$environment_info\n version: \"$(echo "${full_version}" | awk '{print $2}')\""
|
56
|
+
environment_info="$environment_info\n date: \"$(echo "${full_version}" | sed 's/^.*(\([0-9]\{4\}\(-[0-9][0-9]\)\{2\}\).*$/\1/')\""
|
57
|
+
environment_info="$environment_info\n platform: \"$(echo "${full_version}" | sed 's/^.*\[//' | sed 's/\].*$//')\""
|
58
|
+
environment_info="$environment_info\n patchlevel: \"$(echo "${full_version}" | sed 's/^.*(//' | sed 's/).*$//')\""
|
59
|
+
environment_info="$environment_info\n full_version: \"${full_version}\""
|
60
|
+
environment_info="$environment_info\n\nhomes:"
|
61
|
+
environment_info="$environment_info\n gem: \"${GEM_HOME:-'not set'}\""
|
62
|
+
environment_info="$environment_info\n ruby: \"${MY_RUBY_HOME:-'not set'}\""
|
63
|
+
environment_info="$environment_info\n\nbinaries:"
|
64
|
+
environment_info="$environment_info\n ruby: \"$(command -v ruby)\""
|
65
|
+
environment_info="$environment_info\n irb: \"$(command -v irb)\""
|
66
|
+
environment_info="$environment_info\n gem: \"$(command -v gem)\""
|
67
|
+
environment_info="$environment_info\n rake: \"$(command -v rake)\""
|
68
|
+
environment_info="$environment_info\n\nenvironment:"
|
69
|
+
environment_info="$environment_info\n GEM_HOME: \"$GEM_HOME\""
|
70
|
+
environment_info="$environment_info\n GEM_PATH: \"$GEM_PATH\""
|
71
|
+
environment_info="$environment_info\n BUNDLE_PATH: \"$BUNDLE_PATH\""
|
72
|
+
environment_info="$environment_info\n MY_RUBY_HOME: \"$MY_RUBY_HOME\""
|
73
|
+
environment_info="$environment_info\n IRBRC: \"$IRBRC\""
|
74
|
+
environment_info="$environment_info\n RUBYOPT: \"$RUBYOPT\""
|
75
|
+
environment_info="$environment_info\n gemset: \"$(echo $GEM_HOME | awk -F${rvm_gemset_separator:-'@'} '{print $2}')\"\n"
|
76
|
+
if [[ ! -z "$MAGLEV_HOME" ]] ; then
|
77
|
+
environment_info="$environment_info\n MAGLEV_HOME: \"$MAGLEV_HOME\""
|
78
|
+
fi
|
87
79
|
unset full_version
|
88
80
|
}
|
89
81
|
|
@@ -119,7 +111,7 @@ __rvm_debug() {
|
|
119
111
|
|
120
112
|
for file_name in $(echo $debug_files); do
|
121
113
|
if [[ -f "$file_name" ]] && [[ -s "$file_name" ]] ; then
|
122
|
-
$rvm_scripts_path/log "debug" "$file_name (filtered):\n$(cat $file_name | awk '!/assword|_key/')\n"
|
114
|
+
$rvm_scripts_path/log "debug" "$file_name \(filtered\):\n$(cat $file_name | awk '!/assword|_key/')\n"
|
123
115
|
fi
|
124
116
|
done
|
125
117
|
|
@@ -134,7 +126,6 @@ __rvm_strings() {
|
|
134
126
|
return 1
|
135
127
|
else
|
136
128
|
results="$results $(__rvm_select ; echo $rvm_ruby_string)"
|
137
|
-
unset rvm_ruby_string
|
138
129
|
fi
|
139
130
|
done
|
140
131
|
echo $results
|
@@ -199,7 +190,7 @@ __rvm_cleanup_variables() {
|
|
199
190
|
|
200
191
|
# Unset ruby-specific variables
|
201
192
|
__rvm_unset_ruby_variables() {
|
202
|
-
unset rvm_ruby_interpreter rvm_ruby_version rvm_url rvm_ruby_repo_url rvm_ruby_package_name rvm_ruby_patch_level rvm_ruby_make rvm_ruby_make_install rvm_ruby_revision rvm_ruby_tag rvm_major_version rvm_minor_version rvm_ruby_gem_home rvm_ruby_binary rvm_ruby_home rvm_ruby_log_path rvm_ruby_src_path rvm_ruby_irbrc rvm_ruby_selected_flag
|
193
|
+
unset rvm_ruby_interpreter rvm_ruby_version rvm_url rvm_ruby_repo_url rvm_ruby_package_name rvm_ruby_patch_level rvm_ruby_make rvm_ruby_make_install rvm_ruby_revision rvm_ruby_tag rvm_major_version rvm_minor_version rvm_ruby_gem_home rvm_ruby_binary rvm_ruby_home rvm_ruby_log_path rvm_ruby_src_path rvm_ruby_irbrc rvm_ruby_selected_flag rvm_ruby_src_path rvm_ruby_repo_url rvm_major_version rvm_minor_version rvm_ruby_gem_home rvm_head_flag rvm_ruby_configure rvm_ruby_mode rvm_ruby_package_file rvm_ruby_package_name rvm_ruby_gem_path rvm_ruby_name rvm_ruby_alias
|
203
194
|
}
|
204
195
|
|
205
196
|
__rvm_set_rvmrc() {
|
@@ -220,8 +211,16 @@ __rvm_set_rvmrc() {
|
|
220
211
|
|
221
212
|
}
|
222
213
|
__rvm_load_rvmrc() {
|
223
|
-
|
224
|
-
|
214
|
+
for rvmrc in /etc/rvmrc $HOME/.rvmrc ; do
|
215
|
+
if [[ -f "$rvmrc" ]] ; then
|
216
|
+
if grep -q '^\s*rvm .*$' $rvmrc ; then
|
217
|
+
$rvm_scripts_path/log "error" "$rvmrc is for rvm settings only.\nrvm CLI may NOT be called from within $rvmrc. \nSkipping the loading of $rvmrc"
|
218
|
+
return 1
|
219
|
+
else
|
220
|
+
source "$rvmrc"
|
221
|
+
fi
|
222
|
+
fi
|
223
|
+
done
|
225
224
|
}
|
226
225
|
|
227
226
|
# Wrap the specified ruby code file in a Benchmark.bmbm block and execute it.
|
@@ -291,14 +290,13 @@ __rvm_load_defaults() {
|
|
291
290
|
|
292
291
|
__rvm_db "system_ruby" "rvm_system_ruby"
|
293
292
|
if [[ ! -z "$rvm_system_ruby" ]] ; then
|
294
|
-
rvm_system_ruby=$(
|
293
|
+
rvm_system_ruby=$(command -v ruby)
|
295
294
|
if [[ $? -ne 0 ]] ; then
|
296
295
|
$rvm_scripts_path/log "info" "System ruby not found, no system default will be stored."
|
297
296
|
else
|
298
297
|
$rvm_scripts_path/db "$rvm_config_path/user" "system_ruby" "$rvm_system_ruby"
|
299
|
-
|
300
298
|
# Now store system system & user gem paths
|
301
|
-
if [[ ! -z "$(
|
299
|
+
if [[ ! -z "$(command -v gem)" ]] ; then
|
302
300
|
__rvm_db "system_user_gem_path" "rvm_system_user_gem_path"
|
303
301
|
if [[ -z "$rvm_system_user_gem_path" ]] ; then
|
304
302
|
rvm_system_user_gem_path=$( rvm system ; gem env gemdir user; )
|
@@ -425,7 +423,7 @@ __rvm_list_known() {
|
|
425
423
|
echo -e "jruby-1.2.0\njruby-1.3.1\njruby(-1.4.0) # the default\njruby-head"
|
426
424
|
echo -e "rbx(-prc1) # default\nrbx-head"
|
427
425
|
echo -e "ree-1.8.6\nree(-1.8.7) # the default\nree-1.8.6-head\nree-1.8.7-head"
|
428
|
-
echo -e "maglev(-
|
426
|
+
echo -e "maglev(-23400)\nmaglev-head"
|
429
427
|
echo -e "mput(-head) # shyouhei head, the default mput"
|
430
428
|
echo -e "ironruby-0.9.3\nironruby-1.0-rc2\nironruby-head"
|
431
429
|
if [[ "Darwin" = "$(uname)" ]] ; then
|
@@ -435,7 +433,7 @@ __rvm_list_known() {
|
|
435
433
|
|
436
434
|
__rvm_list_rubies() {
|
437
435
|
echo
|
438
|
-
ruby=$(
|
436
|
+
ruby=$(command -v ruby) ; current_ruby=""
|
439
437
|
if [[ ! -z "$ruby" ]] && [[ ! -z "$(echo $ruby | awk '/rvm/')" ]] ; then
|
440
438
|
current_ruby="$(echo $ruby | xargs dirname | xargs dirname | xargs basename 2> /dev/null)"
|
441
439
|
fi
|
@@ -462,18 +460,18 @@ __rvm_list_rubies() {
|
|
462
460
|
fi ; unset version
|
463
461
|
fi
|
464
462
|
|
465
|
-
system_ruby="$(rvm system ;
|
466
|
-
if [[ ! -z "$system_ruby" ]] && [[ -x "$system_ruby" ]]; then
|
463
|
+
system_ruby="$(rvm system ; command -v ruby)"
|
464
|
+
if [[ ! -z "$system_ruby" ]] && [[ -x "$system_ruby" ]] ; then
|
467
465
|
echo -e "\nSystem Ruby\n"
|
468
466
|
system_version=$($system_ruby -v)
|
469
|
-
|
467
|
+
binary=$(ls -l "$system_ruby" | awk '{print $NF}') # Account for symbolic links.
|
468
|
+
string="[ $(file $binary | awk '/x86.64/ {print "x86_64"} /386/ {print "i386"} /ppc/ {print "ppc"}' | tr "\n" ' ')]"
|
469
|
+
|
470
470
|
if [[ ! -z "$system_ruby" ]] && [[ "$current_ruby" = "$system_version" ]] ; then echo -n "=> " ; else echo -n " " ; fi
|
471
471
|
echo -e "$(tput setaf 2)system$(tput sgr0) $string"
|
472
|
-
else
|
473
|
-
$rvm_scripts_path/log "info" "No system ruby found."
|
474
472
|
fi
|
475
473
|
|
476
|
-
unset current_ruby version selected system_ruby system_version string
|
474
|
+
unset current_ruby version selected system_ruby system_version string binary
|
477
475
|
echo
|
478
476
|
}
|
479
477
|
|
@@ -532,7 +530,7 @@ __rvm_update_rvm() {
|
|
532
530
|
}
|
533
531
|
|
534
532
|
__rvm_reboot() {
|
535
|
-
$rvm_scripts_path/log "warn" "Do you wish to
|
533
|
+
$rvm_scripts_path/log "warn" "Do you wish to reboot rvm? ('yes', or 'no')"
|
536
534
|
read response
|
537
535
|
if [[ "yes" = "$response" ]] ; then
|
538
536
|
builtin cd $rvm_path
|
@@ -571,10 +569,10 @@ __rvm_pushpop() {
|
|
571
569
|
# Meant for use before and after an operation that might reset the currently selected ruby.
|
572
570
|
__rvm_state() {
|
573
571
|
if [[ -z "$rvm_state" ]] ; then
|
574
|
-
if [[ -z "$(
|
572
|
+
if [[ -z "$(command -v ruby | awk /$(basename $rvm_rubies_path)/)" ]] ; then
|
575
573
|
rvm_state=system
|
576
574
|
else
|
577
|
-
rvm_state="$(dirname "$(
|
575
|
+
rvm_state="$(dirname "$(command -v ruby)" | xargs dirname | xargs basename)"
|
578
576
|
fi
|
579
577
|
else
|
580
578
|
rvm_ruby_string="$rvm_state"
|
@@ -587,7 +585,7 @@ __rvm_state() {
|
|
587
585
|
# Output an inspection of selected 'binary' scripts, based on CLI selection.
|
588
586
|
__rvm_inspect() {
|
589
587
|
for binary in $rvm_ruby_args ; do
|
590
|
-
actual_file="$(
|
588
|
+
actual_file="$(command -v $binary)"
|
591
589
|
$rvm_scripts_path/log "info" "$actual_file:"
|
592
590
|
if [[ ! -z "$rvm_shebang_flag" ]] ; then cat $actual_file | head -n 1 ; fi
|
593
591
|
if [[ ! -z "$rvm_env_flag" ]] ; then cat $actual_file | awk '/ENV/' ; fi
|
@@ -638,7 +636,7 @@ __rvm_make_flags() {
|
|
638
636
|
# Select a gemset based on CLI set options and environment.
|
639
637
|
# This only sets 'rvm_ruby_gem_home'
|
640
638
|
__rvm_gemset_select() {
|
641
|
-
|
639
|
+
command -v gem > /dev/null
|
642
640
|
if [[ $? -gt 0 ]] ; then return 0 ; fi # Stop if no 'gem' command is available.
|
643
641
|
|
644
642
|
rvm_ruby_global_gems_path="$rvm_gems_path/${rvm_ruby_string}${rvm_gemset_separator}global"
|
@@ -664,7 +662,7 @@ __rvm_gemset_select() {
|
|
664
662
|
else
|
665
663
|
if [[ ! -z "$rvm_ruby_string" ]] && [[ "$rvm_ruby_interpreter" != "system" ]] ; then
|
666
664
|
rvm_ruby_gem_home="$rvm_gems_path/$rvm_ruby_string"
|
667
|
-
elif [[ -z "$GEM_HOME" ]] && [[ ! -z "$(
|
665
|
+
elif [[ -z "$GEM_HOME" ]] && [[ ! -z "$(command -v gem)" ]] ; then
|
668
666
|
rvm_ruby_gem_home=$(gem env gemdir)
|
669
667
|
elif [[ ! -z "$GEM_HOME" ]] ; then
|
670
668
|
rvm_ruby_gem_home="$GEM_HOME"
|
@@ -674,8 +672,20 @@ __rvm_gemset_select() {
|
|
674
672
|
fi
|
675
673
|
if [[ -z "$rvm_gemset_name" ]] ; then unset rvm_gemset_name ; fi
|
676
674
|
else
|
677
|
-
|
678
|
-
|
675
|
+
gemset=$(echo "$rvm_ruby_gem_home" | awk -F'@' '{print $NF}')
|
676
|
+
if [[ -z "$rvm_ruby_string" ]] && [[ ! -z "${GEM_HOME/@*/}" ]] ; then
|
677
|
+
rvm_ruby_string=$(basename ${GEM_HOME/@*/})
|
678
|
+
fi
|
679
|
+
|
680
|
+
if [[ ! -z "$rvm_ruby_string" ]] ; then
|
681
|
+
if [[ -z "$rvm_ruby_gem_home" ]] || [[ ! -z "$gemset" ]] ; then
|
682
|
+
rvm_ruby_gem_home="$rvm_gems_path/${rvm_ruby_string}${rvm_gemset_separator}${rvm_gemset_name}"
|
683
|
+
elif [[ ! -z "$gemset" ]] && [[ "$rvm_gemset_name" != "$gemset" ]] ; then
|
684
|
+
rvm_ruby_gem_home="$rvm_gems_path/${rvm_ruby_string}${rvm_gemset_separator}${rvm_gemset_name}"
|
685
|
+
fi ; unset gemset
|
686
|
+
else
|
687
|
+
$rvm_scripts_path/log "error" "Gemsets can not be used with non rvm controlled rubies (currently)."
|
688
|
+
return 1
|
679
689
|
fi
|
680
690
|
fi
|
681
691
|
|
@@ -766,3 +776,15 @@ __rvm_mono_env() {
|
|
766
776
|
export PKG_CONFIG_PATH="$rvm_usr_path/lib/pkgconfig:$PKG_CONFIG_PATH"
|
767
777
|
PATH="$rvm_usr_path/bin:$PATH"
|
768
778
|
}
|
779
|
+
|
780
|
+
__rvm_Answer_to_the_Ultimate_Question_of_Life_the_Universe_and_Everything() {
|
781
|
+
for index in {1..750} ; do perl -e 'sleep 0.2'; echo -n '.' ; done ; printf "%d" 0x2A ; echo
|
782
|
+
}
|
783
|
+
|
784
|
+
__rvm_ultimate_question() {
|
785
|
+
echo "I do not know the Ultimate Question, "
|
786
|
+
echo "however I can help you build a more "
|
787
|
+
echo "powerful Ruby which can compute the "
|
788
|
+
echo "Ultimate Question."
|
789
|
+
}
|
790
|
+
|