rvm 0.0.2 → 0.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/README +62 -1
- data/bash/rvm +93 -47
- data/bash/rvm-install +6 -1
- metadata +1 -1
data/README
CHANGED
@@ -1 +1,62 @@
|
|
1
|
-
|
1
|
+
|
2
|
+
Usage:
|
3
|
+
|
4
|
+
rvm Action [Implementation] [Options]
|
5
|
+
|
6
|
+
Action:
|
7
|
+
|
8
|
+
* usage - Show this usage information
|
9
|
+
use - Switch to using a specific ruby versio (new login shell)
|
10
|
+
info - Show information for current ruby
|
11
|
+
gemdir - Switch to gem directory for installation (new login shell)
|
12
|
+
srcdir - Switch to src directory for the current ruby installation
|
13
|
+
gemdup - Clone source implementation version gems to currently used version
|
14
|
+
install - Install a ruby version, default is from source
|
15
|
+
debug - Emit environment and configuration information for debugging
|
16
|
+
|
17
|
+
Implementation:
|
18
|
+
|
19
|
+
* ruby - MRI/YARV Ruby (The Standard), defaults to 1.8.6
|
20
|
+
jruby - jRuby
|
21
|
+
ree - Ruby Enterprise Edition
|
22
|
+
rubinius - Rubinius (NIY)
|
23
|
+
default - Resets to the default system ruby
|
24
|
+
all - Used with install, installs all latest known versions
|
25
|
+
|
26
|
+
Options:
|
27
|
+
|
28
|
+
-v|--version - Ruby Package Version, defaults to 'latest'
|
29
|
+
-l|--level - Patch level for the specified Ruby version
|
30
|
+
-p|--prefix - Package and source directory prefix, with trailing slash!
|
31
|
+
Default is a users home directory and /usr/local/ for root
|
32
|
+
-c|--configure - Options for source compile (default: --enable-shared)
|
33
|
+
-d|--debug - Toggle debug mode on for extra messages (NIY)
|
34
|
+
|
35
|
+
Notes:
|
36
|
+
|
37
|
+
* Defaults above are denoted with a '*' prefix.
|
38
|
+
* rvm is intended to be run as an individual user (not root, yet)
|
39
|
+
* All ruby installation, configuration and source files are in ~/.rvm
|
40
|
+
* To manually reset to defaults: "rm -f ~/.rvm/current", then open new shell
|
41
|
+
* To preserve previous gem installations for a particular ruby version copy,
|
42
|
+
move, symlink or copy the old gem directory to (1.8 for 1.8.X):
|
43
|
+
~/.gem/$interpreter/$version
|
44
|
+
|
45
|
+
Examples:
|
46
|
+
|
47
|
+
$ gem install rvm # Install the rvm gem
|
48
|
+
$ rvm-install # Install rvm, adds source hooks to ~/.bash_profile
|
49
|
+
$ rvm install jruby # Install jRuby, default 1.3.1
|
50
|
+
$ rvm use ruby -v 1.9.1 # Use Ruby 1.9, install first if not installed
|
51
|
+
$ rvm use -v 1.9 # Equivalent to above, because of defaults
|
52
|
+
$ rvm use default # Use the system default (as if no rvm)
|
53
|
+
|
54
|
+
TODO: (in order)
|
55
|
+
|
56
|
+
* Documentation
|
57
|
+
* Change gemdup to simply allow for a path to base gem dir to clone from
|
58
|
+
* rvm gemdir default
|
59
|
+
* Debug level messages
|
60
|
+
* Rubinius (not in first revisions)
|
61
|
+
* Shell detection instead of simply assuming bash (not in first revisions)
|
62
|
+
|
data/bash/rvm
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
#!/bin/bash
|
2
2
|
|
3
3
|
rvm_author="Wayne E. Seguin"
|
4
|
-
rvm_version="0.0.
|
4
|
+
rvm_version="0.0.3"
|
5
5
|
rvm_updated="2009.08.23"
|
6
6
|
|
7
7
|
#
|
@@ -25,6 +25,7 @@ function usage {
|
|
25
25
|
use - Switch to using a specific ruby versio (new login shell)
|
26
26
|
info - Show information for current ruby
|
27
27
|
gemdir - Switch to gem directory for installation (new login shell)
|
28
|
+
srcdir - Switch to src directory for the current ruby installation
|
28
29
|
gemdup - Clone source implementation version gems to currently used version
|
29
30
|
install - Install a ruby version, default is from source
|
30
31
|
debug - Emit environment and configuration information for debugging
|
@@ -44,6 +45,7 @@ function usage {
|
|
44
45
|
-l|--level - Patch level for the specified Ruby version
|
45
46
|
-p|--prefix - Package and source directory prefix, with trailing slash!
|
46
47
|
Default is a users home directory and /usr/local/ for root
|
48
|
+
-c|--configure - Options for source compile (default: --enable-shared)
|
47
49
|
-d|--debug - Toggle debug mode on for extra messages (NIY)
|
48
50
|
|
49
51
|
Notes:
|
@@ -68,7 +70,8 @@ function usage {
|
|
68
70
|
TODO: (in order)
|
69
71
|
|
70
72
|
* Documentation
|
71
|
-
* Change
|
73
|
+
* Change gemdup to simply allow for a path to base gem dir to clone from
|
74
|
+
* rvm gemdir default
|
72
75
|
* Debug level messages
|
73
76
|
* Rubinius (not in first revisions)
|
74
77
|
* Shell detection instead of simply assuming bash (not in first revisions)
|
@@ -83,7 +86,7 @@ function debug { log "\e[4;34m <d> $*" ; }
|
|
83
86
|
function info { log "\e[0;32m <i> $*" ; }
|
84
87
|
function warn { log "\e[0;33m <w> $*" ; }
|
85
88
|
function error { log "\e[0;31m <e> $*" ; }
|
86
|
-
function fail { log "\e[0;31m <e> $*" ; }
|
89
|
+
function fail { log "\e[0;31m <e> $*" ; return 1 ; }
|
87
90
|
|
88
91
|
function ruby-gi { gem install -q --no-rdoc --no-ri $* ; }
|
89
92
|
|
@@ -129,7 +132,7 @@ function ruby-install-source {
|
|
129
132
|
if [ ! -f "$package_name.tar.gz" ] ; then $curl $url ; fi
|
130
133
|
tar xzf $package_name.tar.gz && cd $package_name/
|
131
134
|
fi
|
132
|
-
./configure --prefix=$install_path/$package_name --enable-shared && make && make install
|
135
|
+
./configure --prefix=$install_path/$package_name ${configure-'--enable-shared'} && make && make install
|
133
136
|
chmod +x $install_path/$package_name/bin/*
|
134
137
|
popd
|
135
138
|
|
@@ -191,9 +194,6 @@ function ruby-install {
|
|
191
194
|
|
192
195
|
ruby-gi rake
|
193
196
|
|
194
|
-
MY_RUBY_HOME=ruby_home
|
195
|
-
export ruby_home GEM_HOME PATH MY_RUBY_HOME
|
196
|
-
|
197
197
|
}
|
198
198
|
|
199
199
|
function ruby-use {
|
@@ -202,15 +202,15 @@ function ruby-use {
|
|
202
202
|
|
203
203
|
default)
|
204
204
|
rm -f ~/.rvm/current
|
205
|
-
unset
|
205
|
+
unset MY_RUBY_HOME
|
206
206
|
unset GEM_HOME
|
207
207
|
;;
|
208
|
-
#leopard)
|
208
|
+
#leopard) MY_RUBY_HOME="/System/Library/Frameworks/Ruby.framework/Versions/Current/usr"; GEM_HOME="$HOME/.gem/ruby/1.8" ;;
|
209
209
|
|
210
210
|
jruby)
|
211
211
|
version="${version-1.3.1}"
|
212
212
|
if [ "$version" = "1.2.0" -o "$version" = "1.3.1" ] ; then
|
213
|
-
|
213
|
+
MY_RUBY_HOME="$install_path/jruby-$version"
|
214
214
|
GEM_HOME="$HOME/.gem/jruby/1.8"
|
215
215
|
alias ruby_ng="jruby --ng"
|
216
216
|
alias ruby_ng_server="jruby --ng-server"
|
@@ -223,7 +223,7 @@ function ruby-use {
|
|
223
223
|
version=${version-1.8.6}
|
224
224
|
if [ "$version" = "1.8.6" ] ; then
|
225
225
|
patchlevel="${3-20090610}"
|
226
|
-
|
226
|
+
MY_RUBY_HOME="$install_path/ruby-enterprise-$version-$patchlevel"
|
227
227
|
GEM_HOME="$HOME/.gem/ruby-enterprise/1.8"
|
228
228
|
else
|
229
229
|
fail "Unknown Ruby Enterprise Edition version: $version"
|
@@ -233,15 +233,15 @@ function ruby-use {
|
|
233
233
|
ruby)
|
234
234
|
if [ "$version" = "1.8.6" ] ; then
|
235
235
|
patchlevel="${patchlevel-369}"
|
236
|
-
|
236
|
+
MY_RUBY_HOME="$install_path/ruby-1.8.6-p$patchlevel"
|
237
237
|
GEM_HOME="$HOME/.gem/ruby/1.8"
|
238
238
|
elif [ "$version" = "1.8.7" ] ; then
|
239
239
|
patchlevel="${patchlevel-174}"
|
240
|
-
|
240
|
+
MY_RUBY_HOME="$install_path/ruby-1.8.7-p$patchlevel"
|
241
241
|
GEM_HOME="$HOME/.gem/ruby/1.8"
|
242
242
|
elif [ "$version" = "1.9.1" -o "$version" = "1.9" ] ; then
|
243
243
|
patchlevel="${patchlevel-243}"
|
244
|
-
|
244
|
+
MY_RUBY_HOME="$install_path/ruby-1.9.1-p$patchlevel"
|
245
245
|
GEM_HOME="$HOME/.gem/ruby/1.9.1"
|
246
246
|
else
|
247
247
|
fail "Unknown ruby version: $version"
|
@@ -254,18 +254,17 @@ function ruby-use {
|
|
254
254
|
esac
|
255
255
|
|
256
256
|
if [ ! "$implementation" = "default" ] ; then
|
257
|
-
MY_RUBY_HOME
|
258
|
-
|
259
|
-
export GEM_HOME ruby_home MY_RUBY_HOME RUBY_VERSION
|
257
|
+
RUBY_VERSION="$($MY_RUBY_HOME/bin/ruby -v | sed 's/^\(.*\) (.*$/\1/')"
|
258
|
+
export GEM_HOME MY_RUBY_HOME RUBY_VERSION
|
260
259
|
|
261
|
-
if [ ! -d $
|
260
|
+
if [ ! -d $MY_RUBY_HOME ] ; then
|
262
261
|
warn "$implementation $version is not installed, installing."
|
263
262
|
ruby-install $implementation $version $patchlevel
|
264
263
|
fi
|
265
264
|
|
266
265
|
# Setup ~/.rvm/current
|
267
|
-
echo "PATH=$
|
268
|
-
for variable in RUBY_VERSION GEM_HOME MY_RUBY_HOME
|
266
|
+
echo "PATH=$MY_RUBY_HOME/bin:$GEM_HOME/bin:\$PATH ; export PATH" > ~/.rvm/current
|
267
|
+
for variable in RUBY_VERSION GEM_HOME MY_RUBY_HOME ; do
|
269
268
|
eval "export $variable"
|
270
269
|
eval value=\$${variable}
|
271
270
|
echo "${variable}='$value' ; export ${variable}" >> ~/.rvm/current
|
@@ -285,7 +284,7 @@ function ruby-gem-dir {
|
|
285
284
|
jruby) GEM_HOME="$HOME/.gem/jruby/1.8" ;;
|
286
285
|
ree) GEM_HOME="$HOME/.gem/ruby-enterprise/1.8" ;;
|
287
286
|
ruby)
|
288
|
-
if [ "$version" = "1.8.6" ] ; then
|
287
|
+
if [ "$version" = "1.8.6" -o "$version" = "1.8" ] ; then
|
289
288
|
GEM_HOME="$HOME/.gem/ruby/1.8"
|
290
289
|
elif [ "$version" = "1.8.7" ] ; then
|
291
290
|
GEM_HOME="$HOME/.gem/ruby/1.8"
|
@@ -298,39 +297,77 @@ function ruby-gem-dir {
|
|
298
297
|
*)
|
299
298
|
fail "Ruby implementation '$implementation' is not known."
|
300
299
|
esac
|
301
|
-
|
300
|
+
|
301
|
+
if [ -d $GEM_HOME ] ; then
|
302
|
+
cd $GEM_HOME
|
303
|
+
else
|
304
|
+
fail "$implementation $version GEM directory does not exist."
|
305
|
+
fi
|
302
306
|
|
303
307
|
}
|
304
308
|
|
305
|
-
|
306
|
-
|
309
|
+
function ruby-src-dir {
|
310
|
+
case "$implementation" in
|
307
311
|
|
308
|
-
|
309
|
-
|
312
|
+
jruby)
|
313
|
+
version="${version-1.3.1}"
|
314
|
+
if [ "$version" = "1.2.0" -o "$version" = "1.3.1" ] ; then
|
315
|
+
src_dir="$source_path/$implementation-$version"
|
316
|
+
else
|
317
|
+
fail "Unknown jRuby version: $version"
|
318
|
+
fi
|
319
|
+
;;
|
320
|
+
|
321
|
+
ree)
|
322
|
+
version=${version-1.8.6}
|
323
|
+
if [ "$version" = "1.8.6" ] ; then
|
324
|
+
patchlevel="${3-20090610}"
|
325
|
+
src_dir="$source_path/ruby-enterprise-$version-$patchlevel"
|
326
|
+
else
|
327
|
+
fail "Unknown Ruby Enterprise Edition version: $version"
|
328
|
+
fi
|
329
|
+
;;
|
310
330
|
|
311
|
-
# TODO: use ruby-gem-dir for this once it has stabilized
|
312
|
-
case "$source_implementation" in
|
313
|
-
jruby) gemdir="$HOME/.gem/jruby/1.8" ;;
|
314
|
-
ree) gemdir="$HOME/.gem/ruby-enterprise/1.8" ;;
|
315
331
|
ruby)
|
316
|
-
if [ "$
|
317
|
-
|
318
|
-
|
319
|
-
|
320
|
-
|
321
|
-
|
332
|
+
if [ "$version" = "1.8.6" -o "$version" = "1.8" ] ; then
|
333
|
+
patchlevel="${patchlevel-369}"
|
334
|
+
src_dir="$source_path/ruby-1.8.6-p$patchlevel"
|
335
|
+
elif [ "$version" = "1.8.7" ] ; then
|
336
|
+
patchlevel="${patchlevel-174}"
|
337
|
+
src_dir="$source_path/ruby-1.8.7-p$patchlevel"
|
338
|
+
elif [ "$version" = "1.9.1" -o "$version" = "1.9" ] ; then
|
339
|
+
patchlevel="${patchlevel-243}"
|
340
|
+
src_dir="$source_path/ruby-1.9.1-p$patchlevel"
|
341
|
+
else
|
342
|
+
fail "Unknown ruby version: $version"
|
322
343
|
fi
|
323
344
|
;;
|
345
|
+
|
346
|
+
*)
|
347
|
+
fail "Ruby implementation '$implementation' is not known."
|
348
|
+
return 1
|
324
349
|
esac
|
325
350
|
|
326
|
-
if [
|
327
|
-
|
351
|
+
if [ -d $src_dir ] ; then
|
352
|
+
cd $src_dir
|
353
|
+
else
|
354
|
+
fail "$implementation $version source directory does not exist."
|
355
|
+
fi
|
356
|
+
|
357
|
+
}
|
358
|
+
|
359
|
+
# clones from source implementation/version to current
|
360
|
+
function ruby-gem-dup {
|
361
|
+
|
362
|
+
gem_dir=$1 # TODO: check for and remove trailing /gems
|
363
|
+
if [ ! -z "$gem_dir" ] ; then
|
364
|
+
for gem_name_version in `ls $gem_dir/gems` ; do
|
328
365
|
gem_name=${gem_name_version%-*}
|
329
366
|
gem_version=${gem_name_version##*-}
|
330
367
|
if [ -d $GEM_HOME/gems/$gem_name_version ] ; then
|
331
368
|
echo "$gem_name_version already installed."
|
332
369
|
else
|
333
|
-
ruby-gi $
|
370
|
+
ruby-gi $gem_dir/cache/$gem_name-$gem_version.gem
|
334
371
|
fi
|
335
372
|
done
|
336
373
|
else
|
@@ -343,16 +380,24 @@ function rvm-version { info "rvm $rvm_version" ; }
|
|
343
380
|
|
344
381
|
function rvm {
|
345
382
|
|
383
|
+
# Cleanup, aisle 3
|
384
|
+
for variable in action implementation patchlevel version source_path install_path manager debug prefix_path ; do
|
385
|
+
eval "unset $variable"
|
386
|
+
done
|
346
387
|
while [ $# -gt 0 ] ; do
|
347
|
-
|
348
|
-
case "$
|
349
|
-
install|use|path|info|gemdir|gemdup|setup|version|debug)
|
350
|
-
action=$
|
388
|
+
token="$1" ; shift
|
389
|
+
case "$token" in
|
390
|
+
install|use|path|info|gemdir|gemdup|setup|version|debug|srcdir)
|
391
|
+
action=$token ;;
|
351
392
|
ruby|jruby|ree|default|all)
|
352
|
-
implementation="$
|
393
|
+
implementation="$token" ;;
|
394
|
+
1.8|1.9|1.8.6|1.8.7|1.9.1|1.2.0|1.3.1)
|
395
|
+
version="$token" ;;
|
353
396
|
-v|--version) version="$1" ; shift ;;
|
354
397
|
-l|--level) patchlevel="$1" ; shift ;;
|
355
398
|
-p|--prefix) install_path="$1" ; shift ;;
|
399
|
+
-s|--source) source_path="$1" ; shift ;; # Undocumented / untested "feature"
|
400
|
+
-c|--configure) configure="$1" ; shift ;;
|
356
401
|
-m|--manager) manager="$1" ; shift ;;
|
357
402
|
-d|--debug) debug=true ;;
|
358
403
|
*) usage ; return 1
|
@@ -362,14 +407,14 @@ function rvm {
|
|
362
407
|
curl="curl -O -L -s "
|
363
408
|
implementation=${implementation-'ruby'}
|
364
409
|
username=`whoami`
|
410
|
+
|
411
|
+
# TODO: Sanitize user input, ensure that there is a / a the end...
|
365
412
|
if [ "$username" = "root" ] ; then
|
366
413
|
prefix_path=${prefix-/usr/local/}
|
367
414
|
else
|
368
415
|
prefix_path=${prefix-$HOME/.}
|
369
416
|
fi
|
370
|
-
|
371
|
-
# TODO: Sanitize user input, ensure that there is a / a the end...
|
372
|
-
source_path="${prefix_path}rvm/src"
|
417
|
+
source_path="${source_path-${prefix_path}rvm/src}"
|
373
418
|
install_path="${prefix_path}rvm"
|
374
419
|
|
375
420
|
mkdir -p $source_path $install_path
|
@@ -398,6 +443,7 @@ function rvm {
|
|
398
443
|
;;
|
399
444
|
use) ruby-use $implementation $version $patchlevel ;;
|
400
445
|
gemdir) ruby-gem-dir $implementation $version $patchlevel ;;
|
446
|
+
srcdir) ruby-src-dir $implementation $version $patchlevel ;;
|
401
447
|
gemdup) ruby-gem-dup $implementation $version $patchlevel ;;
|
402
448
|
info) ruby-info $implementation $version $patchlevel ;;
|
403
449
|
version) rvm-version ;;
|
data/bash/rvm-install
CHANGED
@@ -17,5 +17,10 @@ if [ -z "`grep '\.rvm/current' ~/.bash_profile`" ] ; then
|
|
17
17
|
echo "if [ -f ~/.rvm/current ] ; then source ~/.rvm/current ; fi" >> ~/.bash_profile
|
18
18
|
fi
|
19
19
|
|
20
|
-
|
20
|
+
if [ -z "`grep '\.profile' ~/.bash_profile`" ] ; then
|
21
|
+
echo "Adding 'source ~/.profile' to the end of ~/.bash_profile."
|
22
|
+
echo "if [ -f ~/.profile ] ; then source ~/.profile ; fi" >> ~/.bash_profile
|
23
|
+
fi
|
24
|
+
|
25
|
+
source ~/.rvm/bin/rvm
|
21
26
|
|