rbenv-migrate 0.1 → 0.2.1
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.
- checksums.yaml +4 -4
- data/VERSION +1 -1
- data/lib/rbenv_migrate.rb +16 -5
- data/rbenv-migrate.gemspec +4 -2
- data/spec/migrate_spec.rb +123 -0
- data/spec/spec_helper.rb +28 -0
- metadata +50 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3e5126f72459cd9a3cf2203cff5f51a5d7bc563696e7ded64cb1a89fa180331c
|
4
|
+
data.tar.gz: 8505701f997514f9b9dced13c7c30f5cd64e0cabc76808608e2bdafefd6d4b4e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 583abe4fbd75c51a7e3a69a6c4eb6cc4f166d5741bcd71d410aacf876e6b643a02568e6085feb5754054aaf1b434448b099357e00a3f1eaa6f8d810d591198b2
|
7
|
+
data.tar.gz: ec6c3cfb66a2c07ab3e96949ca94f772e87703cfed8267febd12bb2937b6432b46bdfe60818ff35f0b41e86580ef4f2624098113e8f0958ecd5cf0379d1146b9
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.1
|
1
|
+
0.2.1
|
data/lib/rbenv_migrate.rb
CHANGED
@@ -15,14 +15,25 @@ module RBEMigrate
|
|
15
15
|
educate_on_error
|
16
16
|
end
|
17
17
|
|
18
|
-
Optimist::educate if ARGV.empty?
|
19
|
-
|
20
18
|
@old_version = ARGV.first
|
19
|
+
|
20
|
+
if @old_version.nil? || @old_version == RUBY_VERSION ||
|
21
|
+
!Dir["#{ENV['RBENV_ROOT']}/versions/**"].map { |f| File.basename f }.include?(@old_version)
|
22
|
+
Optimist::educate
|
23
|
+
end
|
21
24
|
end
|
22
25
|
|
23
26
|
def run
|
24
|
-
old_gems = gemspecs_for
|
25
|
-
|
27
|
+
old_gems = gemspecs_for(@old_version).select do |gem|
|
28
|
+
if gem.required_ruby_version =~ Gem::Version.new(RUBY_VERSION)
|
29
|
+
true
|
30
|
+
else
|
31
|
+
$stderr.puts "#{gem.name} #{gem.version} is not compatible with Ruby #{RUBY_VERSION}, skipping."
|
32
|
+
false
|
33
|
+
end
|
34
|
+
end.map(&:name)
|
35
|
+
|
36
|
+
current_gems = gemspecs_for(RUBY_VERSION).map(&:name)
|
26
37
|
|
27
38
|
if (gems_to_install = old_gems - current_gems).any?
|
28
39
|
command = Gem::Commands::InstallCommand.new.tap { |c| c.handle_options gems_to_install }
|
@@ -43,7 +54,7 @@ module RBEMigrate
|
|
43
54
|
|
44
55
|
def gemspecs_for(version)
|
45
56
|
gemspecs = "#{ENV['RBENV_ROOT']}/versions/#{version}/lib/ruby/gems/*/specifications/*.gemspec"
|
46
|
-
Dir.glob(File.join gemspecs).map { |s| Gem::Specification.load(s)
|
57
|
+
Dir.glob(File.join gemspecs).map { |s| Gem::Specification.load(s) }
|
47
58
|
end
|
48
59
|
end
|
49
60
|
end
|
data/rbenv-migrate.gemspec
CHANGED
@@ -14,9 +14,11 @@ Gem::Specification.new do |gem|
|
|
14
14
|
gem.bindir = "bin"
|
15
15
|
gem.executables = %w[rbenv-migrate]
|
16
16
|
gem.require_paths = %w[lib]
|
17
|
+
gem.test_files = Dir["spec/**/*"]
|
17
18
|
gem.files = `git ls-files -z`.split "\x0"
|
18
19
|
|
19
|
-
gem.required_ruby_version = "~> 3.0"
|
20
|
-
|
21
20
|
gem.add_dependency "optimist", "~> 3.0"
|
21
|
+
gem.add_development_dependency "rake", "~> 13.0"
|
22
|
+
gem.add_development_dependency "rspec", "~> 3.12"
|
23
|
+
gem.add_development_dependency "fuubar", "~> 2.5"
|
22
24
|
end
|
@@ -0,0 +1,123 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
# Arbitrary valid old version
|
4
|
+
OLD_VERSION = "2.7.8"
|
5
|
+
|
6
|
+
def set_version(version=OLD_VERSION)
|
7
|
+
ARGV.replace version.nil? ? [] : [version]
|
8
|
+
end
|
9
|
+
|
10
|
+
def args_should_trigger_help_screen(args)
|
11
|
+
it "shows the help screen" do
|
12
|
+
set_version args
|
13
|
+
expect(Optimist).to receive :educate
|
14
|
+
|
15
|
+
RBEMigrate::CLI.new
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
RSpec.describe RBEMigrate::CLI do
|
20
|
+
let(:cli) { described_class.new }
|
21
|
+
let(:gemspecs) { "/path/to/versions/#{OLD_VERSION}/lib/ruby/gems/*/specifications/*.gemspec" }
|
22
|
+
|
23
|
+
before(:each) do
|
24
|
+
set_version
|
25
|
+
|
26
|
+
allow(ENV).to receive(:[]).with("RBENV_ROOT").and_return("/path/to")
|
27
|
+
|
28
|
+
allow(Dir).to receive(:[]).with("/path/to/versions/**").
|
29
|
+
and_return instance_double(Dir, map: [OLD_VERSION, RUBY_VERSION])
|
30
|
+
allow(Dir).to receive(:glob).with(gemspecs).
|
31
|
+
and_return instance_double(Dir, map: %w[spec1 spec2])
|
32
|
+
end
|
33
|
+
|
34
|
+
describe "#initialize" do
|
35
|
+
context "when no argument is provided" do
|
36
|
+
args_should_trigger_help_screen nil
|
37
|
+
end
|
38
|
+
|
39
|
+
context "when an invalid argument is provided" do
|
40
|
+
args_should_trigger_help_screen "not a version"
|
41
|
+
end
|
42
|
+
|
43
|
+
context "when the current version is given as an argument" do
|
44
|
+
args_should_trigger_help_screen RUBY_VERSION
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
describe "#run" do
|
49
|
+
before(:each) { expect(Optimist).not_to receive :educate }
|
50
|
+
|
51
|
+
context "when there are no gems to migrate" do
|
52
|
+
it "prints a message and exits" do
|
53
|
+
allow(cli).to receive(:gemspecs_for).and_return([])
|
54
|
+
expect { cli.run }.to output(/appear to be up-to-date/).
|
55
|
+
to_stdout.and raise_error(SystemExit)
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
context "when there are gems to migrate" do
|
60
|
+
let(:install_command_double) { instance_double Gem::Commands::InstallCommand, execute: true }
|
61
|
+
|
62
|
+
before :each do
|
63
|
+
allow(cli).to receive(:gemspecs_for).with(OLD_VERSION).and_return(old_gems)
|
64
|
+
allow(cli).to receive(:gemspecs_for).with(RUBY_VERSION).and_return(current_gems)
|
65
|
+
allow(Gem::Commands::InstallCommand).to receive(:new).and_return(install_command_double)
|
66
|
+
end
|
67
|
+
|
68
|
+
context "when some gems are already installed on the target version" do
|
69
|
+
let(:old_gems_names) { %w[gem1 gem2 gem3 gem4] }
|
70
|
+
let(:current_gems_names) { %w[gem1 gem3 ] }
|
71
|
+
let(:result) { %w[ gem2 gem4] }
|
72
|
+
|
73
|
+
%i[old_gems current_gems].each do |var|
|
74
|
+
let var do
|
75
|
+
send(:"#{var}_names").map do |name|
|
76
|
+
Gem::Specification.new do |gem|
|
77
|
+
gem.name = name
|
78
|
+
gem.version = "0.1"
|
79
|
+
end
|
80
|
+
end
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
84
|
+
it "passes the correct gems to RubyGems" do
|
85
|
+
expect(install_command_double).to receive(:handle_options).with(result)
|
86
|
+
expect { cli.run }.not_to output(/skipping/).to_stdout
|
87
|
+
end
|
88
|
+
end
|
89
|
+
|
90
|
+
context "when an old gem is incompatible" do
|
91
|
+
let(:current_gems) { [] }
|
92
|
+
let :old_gems do
|
93
|
+
%w[gem1 gem2 gem3].each_with_index.map do |name, i|
|
94
|
+
Gem::Specification.new do |gem|
|
95
|
+
gem.name = name
|
96
|
+
gem.version = "0.1"
|
97
|
+
# First one will be skipped
|
98
|
+
gem.required_ruby_version = "#{i == 0 ? '~>' : '>='} #{OLD_VERSION}"
|
99
|
+
end
|
100
|
+
end
|
101
|
+
end
|
102
|
+
|
103
|
+
let(:result) { %w[gem2 gem3] }
|
104
|
+
|
105
|
+
it "passes the correct gems to RubyGems" do
|
106
|
+
expect(install_command_double).to receive(:handle_options).with(result)
|
107
|
+
cli.run
|
108
|
+
end
|
109
|
+
|
110
|
+
it "outputs that it is skipping that gem" do
|
111
|
+
allow(install_command_double).to receive(:handle_options).with(result)
|
112
|
+
expect { cli.run }.to output(/skipping/).to_stderr
|
113
|
+
end
|
114
|
+
end
|
115
|
+
end
|
116
|
+
end
|
117
|
+
|
118
|
+
describe "#gemspecs_for" do
|
119
|
+
it "returns the gemspecs for the specified version" do
|
120
|
+
expect(cli.send(:gemspecs_for, OLD_VERSION)).to eq(%w[spec1 spec2])
|
121
|
+
end
|
122
|
+
end
|
123
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,28 @@
|
|
1
|
+
require "rbenv_migrate"
|
2
|
+
|
3
|
+
# Include all files in spec/support
|
4
|
+
Dir[File.expand_path("../support/**/*.rb", __FILE__)].each { |f| require f }
|
5
|
+
|
6
|
+
RSpec.configure do |config|
|
7
|
+
# Add `focus: true` hash parameter to a describe/context/it block
|
8
|
+
# to only run the specs in that block
|
9
|
+
config.filter_run_when_matching :focus
|
10
|
+
|
11
|
+
# Fuubar
|
12
|
+
config.add_formatter "Fuubar"
|
13
|
+
config.fuubar_progress_bar_options = { format: " %c/%C |%b>%i|%e " }
|
14
|
+
|
15
|
+
# More verbose output if only running one spec
|
16
|
+
config.default_formatter = "doc" if config.files_to_run.one?
|
17
|
+
|
18
|
+
# Print the 10 slowest examples and example groups at the
|
19
|
+
# end of the spec run, to help surface which specs are running
|
20
|
+
# particularly slow.
|
21
|
+
config.profile_examples = 10
|
22
|
+
|
23
|
+
# Run specs in random order to surface order dependencies. If you find an
|
24
|
+
# order dependency and want to debug it, fix the order by providing the seed,
|
25
|
+
# which is printed after each run, e.g. --seed 1234
|
26
|
+
config.order = :random
|
27
|
+
Kernel.srand config.seed
|
28
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rbenv-migrate
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 0.2.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Vinny Diehl
|
@@ -24,6 +24,48 @@ dependencies:
|
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '3.0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rake
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '13.0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '13.0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rspec
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '3.12'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '3.12'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: fuubar
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '2.5'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '2.5'
|
27
69
|
description: Installs all of your gems from an old version of Ruby so that you may
|
28
70
|
uninstall it.
|
29
71
|
email: vinny.diehl@gmail.com
|
@@ -41,6 +83,8 @@ files:
|
|
41
83
|
- bin/rbenv-migrate
|
42
84
|
- lib/rbenv_migrate.rb
|
43
85
|
- rbenv-migrate.gemspec
|
86
|
+
- spec/migrate_spec.rb
|
87
|
+
- spec/spec_helper.rb
|
44
88
|
homepage: https://github.com/vinnydiehl/rbenv-migrate
|
45
89
|
licenses:
|
46
90
|
- MIT
|
@@ -51,9 +95,9 @@ require_paths:
|
|
51
95
|
- lib
|
52
96
|
required_ruby_version: !ruby/object:Gem::Requirement
|
53
97
|
requirements:
|
54
|
-
- - "
|
98
|
+
- - ">="
|
55
99
|
- !ruby/object:Gem::Version
|
56
|
-
version: '
|
100
|
+
version: '0'
|
57
101
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
58
102
|
requirements:
|
59
103
|
- - ">="
|
@@ -64,4 +108,6 @@ rubygems_version: 3.4.10
|
|
64
108
|
signing_key:
|
65
109
|
specification_version: 4
|
66
110
|
summary: Transfer your gems from old rbenv installs.
|
67
|
-
test_files:
|
111
|
+
test_files:
|
112
|
+
- spec/migrate_spec.rb
|
113
|
+
- spec/spec_helper.rb
|