rvm-tui 0.0.1 → 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +10 -0
- data/README.md +9 -0
- data/VERSION +1 -1
- data/bin/rvm-tui-setup +29 -22
- data/lib/rvm-tui.rb +61 -25
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: eb887902a94db7f5b472c4a2344c4d619dfbfa820a27e64c43e54ac1d22876a8
|
4
|
+
data.tar.gz: b6d25cc471a84289c45684b35387933c200cb33ad45e2e614a0f321ebd59e07e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 528ea9fa16c7dc9eedf1988cae2c2caaf9b3a83ee93f981d630aa24f4b277a276e922a94ea8b57e8ca284239c03b116471db794f2d6f89987f69fd3f47bfd500
|
7
|
+
data.tar.gz: df555dd0a0c2c12c6e4697d2709db78326d29d271170eb1bcb0612a0c8c1f12a8e59f88cce455356c0b818207d6fd9c46ec81001752733dceaad75dcaf83125e
|
data/CHANGELOG.md
ADDED
data/README.md
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
# Ruby enVironment Manager - Text-based User Interface
|
2
|
+
[![Gem Version](https://badge.fury.io/rb/rvm-tui.svg)](https://badge.fury.io/rb/rvm-tui)
|
2
3
|
|
3
4
|
[RVM](https://rvm.io) is the original Ruby enVironment Manager that is used to:
|
4
5
|
- Effortlessly install multiple versions of [Ruby](https://www.ruby-lang.org/en/), including [JRuby](https://www.jruby.org/)
|
@@ -58,6 +59,14 @@ rvm-tui
|
|
58
59
|
is fine, but please isolate to its own commit so I can cherry-pick
|
59
60
|
around it.
|
60
61
|
|
62
|
+
## TODO
|
63
|
+
|
64
|
+
[TODO.md](TODO.md)
|
65
|
+
|
66
|
+
## Change Log
|
67
|
+
|
68
|
+
[CHANGELOG.md](CHANGELOG.md)
|
69
|
+
|
61
70
|
## License
|
62
71
|
|
63
72
|
[Apache License, Version 2.0](https://www.apache.org/licenses/LICENSE-2.0)
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.0.
|
1
|
+
0.0.2
|
data/bin/rvm-tui-setup
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
|
3
|
-
|
3
|
+
version = File.read(File.expand_path('../../VERSION', __FILE__))
|
4
|
+
puts "== rvm-tui-setup version #{version.strip} =="
|
4
5
|
|
5
6
|
ruby = `which ruby`
|
6
7
|
ruby = `which jruby` if ruby.to_s.strip.empty?
|
@@ -8,24 +9,30 @@ ruby = ruby.strip
|
|
8
9
|
rvm = `rvm current`.strip
|
9
10
|
command = "rvm #{rvm} do #{ruby} #{File.expand_path('../../lib/rvm-tui.rb', __FILE__)}"
|
10
11
|
|
11
|
-
rvm_tui_script =
|
12
|
-
function rvm-tui()
|
13
|
-
{
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
}
|
12
|
+
rvm_tui_script = <<~SHELL_SCRIPT
|
13
|
+
function rvm-tui()
|
14
|
+
{
|
15
|
+
# Load RVM into a shell session *as a function*
|
16
|
+
if [[ -s "$HOME/.rvm/scripts/rvm" ]] ; then
|
17
|
+
# First try to load from a user install
|
18
|
+
source "$HOME/.rvm/scripts/rvm"
|
19
|
+
elif [[ -s "/usr/local/rvm/scripts/rvm" ]] ; then
|
20
|
+
# Then try to load from a root install
|
21
|
+
source "/usr/local/rvm/scripts/rvm"
|
22
|
+
else
|
23
|
+
printf "ERROR: An RVM installation was not found.\\n"
|
24
|
+
fi
|
25
|
+
|
26
|
+
IFS='@'
|
27
|
+
read -a rvm_current <<< "$(rvm current)"
|
28
|
+
current_ruby="${rvm_current[0]}"
|
29
|
+
current_gemset="${rvm_current[1]}"
|
30
|
+
#{command} $current_ruby $current_gemset
|
31
|
+
if [ -f "$HOME/.rvm_command" ]; then
|
32
|
+
source $HOME/.rvm_command
|
33
|
+
rm $HOME/.rvm_command
|
34
|
+
fi
|
35
|
+
}
|
29
36
|
SHELL_SCRIPT
|
30
37
|
|
31
38
|
require 'fileutils'
|
@@ -47,7 +54,7 @@ unless bash_profile.split("\n").detect {|line| line.include?(rvm_tui_source_stat
|
|
47
54
|
File.write(bash_profile_file, "#{bash_profile}\n#{rvm_tui_source_statement}")
|
48
55
|
end
|
49
56
|
puts <<~OUTPUT
|
50
|
-
|
51
|
-
To use `rvm-tui`, make sure to first run:
|
52
|
-
source
|
57
|
+
~/#{bash_profile_file_name} has been modified to source the `rvm-tui` function from ~/.rvm_tui_source
|
58
|
+
To use `rvm-tui`, make sure to first run:
|
59
|
+
source ~/.rvm_tui_source
|
53
60
|
OUTPUT
|
data/lib/rvm-tui.rb
CHANGED
@@ -1,27 +1,63 @@
|
|
1
1
|
$LOAD_PATH.unshift(File.expand_path('..', __FILE__))
|
2
2
|
|
3
|
-
puts "rvm-tui version #{File.read(File.expand_path('../../VERSION', __FILE__))}"
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
3
|
+
puts "== rvm-tui version #{File.read(File.expand_path('../../VERSION', __FILE__)).strip} =="
|
4
|
+
|
5
|
+
require 'tty-prompt'
|
6
|
+
|
7
|
+
CURRENT_RVM_RUBY = ARGV[0]
|
8
|
+
CURRENT_RVM_GEMSET = ARGV[1] || 'default'
|
9
|
+
current_rvm = CURRENT_RVM_RUBY
|
10
|
+
current_rvm += "@#{CURRENT_RVM_GEMSET}" unless CURRENT_RVM_GEMSET.nil?
|
11
|
+
CURRENT_RVM = current_rvm
|
12
|
+
puts "Current: #{CURRENT_RVM}"
|
13
|
+
|
14
|
+
RVM_COMMAND_PREFIX = <<~SHELL_SCRIPT
|
15
|
+
# Load RVM into a shell session *as a function*
|
16
|
+
if [[ -s "$HOME/.rvm/scripts/rvm" ]] ; then
|
17
|
+
# First try to load from a user install
|
18
|
+
source "$HOME/.rvm/scripts/rvm"
|
19
|
+
elif [[ -s "/usr/local/rvm/scripts/rvm" ]] ; then
|
20
|
+
# Then try to load from a root install
|
21
|
+
source "/usr/local/rvm/scripts/rvm"
|
22
|
+
else
|
23
|
+
printf "ERROR: An RVM installation was not found.\\n"
|
24
|
+
fi
|
25
|
+
rvm use #{CURRENT_RVM_RUBY}@#{CURRENT_RVM_GEMSET}
|
26
|
+
SHELL_SCRIPT
|
27
|
+
|
28
|
+
def rvm_command(command)
|
29
|
+
`bash -c '#{RVM_COMMAND_PREFIX}\n#{command}'`
|
30
|
+
end
|
31
|
+
|
32
|
+
begin
|
33
|
+
prompt = TTY::Prompt.new
|
34
|
+
rvm_list_lines = rvm_command('rvm list').split("\n")
|
35
|
+
rvm_list_lines.shift if rvm_list_lines.first.start_with?('Using ')
|
36
|
+
rubies = rvm_list_lines[0...-4] # TODO print excluded lines as an appendix
|
37
|
+
rubies_help = rvm_list_lines[-4..-1].join("\n") + "\n"
|
38
|
+
ruby = prompt.select("Choose a Ruby: ", rubies, cycle: true, per_page: 40, filter: true, help: "\n#{rubies_help}", show_help: :always)
|
39
|
+
|
40
|
+
ruby = ruby.split.detect {|text| text.include?('ruby')}
|
41
|
+
rvm_gemset_list = nil
|
42
|
+
if CURRENT_RVM_RUBY == ruby
|
43
|
+
rvm_gemset_list = rvm_command('rvm gemset list')
|
44
|
+
else
|
45
|
+
rvm_gemset_list = rvm_command("rvm #{ruby} do rvm gemset list")
|
46
|
+
end
|
47
|
+
rvm_gemset_list_lines = rvm_gemset_list.split("\n")
|
48
|
+
rvm_gemset_list_lines.shift if rvm_gemset_list_lines.first.start_with?('Using ')
|
49
|
+
gemsets = rvm_gemset_list_lines[2..-1]
|
50
|
+
gemsets_help = rvm_gemset_list_lines[0..1].join("\n") + "\n"
|
51
|
+
gemset = prompt.select("Choose a Gemset: ", gemsets, cycle: true, per_page: 40, filter: true, help: gemsets_help, show_help: :always)
|
52
|
+
|
53
|
+
gemset = gemset.sub('=>', '').sub('(default)', 'default').strip
|
54
|
+
|
55
|
+
command = "rvm --nice use #{ruby}@#{gemset}"
|
56
|
+
|
57
|
+
home_dir = `echo ~`.strip
|
58
|
+
File.write("#{home_dir}/.rvm_command", command)
|
59
|
+
rescue TTY::Reader::InputInterrupt => e
|
60
|
+
# No Op
|
61
|
+
puts # a new line is needed
|
62
|
+
puts "Staying at current (abort detected): #{CURRENT_RVM}"
|
63
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rvm-tui
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- andy_maleh
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-09-
|
11
|
+
date: 2020-09-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: tty-prompt
|
@@ -114,9 +114,11 @@ executables:
|
|
114
114
|
- rvm-tui-setup
|
115
115
|
extensions: []
|
116
116
|
extra_rdoc_files:
|
117
|
+
- CHANGELOG.md
|
117
118
|
- LICENSE.txt
|
118
119
|
- README.md
|
119
120
|
files:
|
121
|
+
- CHANGELOG.md
|
120
122
|
- LICENSE.txt
|
121
123
|
- README.md
|
122
124
|
- VERSION
|