gem_version_check 0.0.10 → 0.1.0
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 +7 -0
- data/.gitignore +6 -0
- data/gem_version_check.gemspec +1 -0
- data/lib/gem_version_check/cli.rb +12 -2
- data/lib/gem_version_check/configuration.rb +3 -1
- data/lib/gem_version_check/dependency.rb +32 -2
- data/lib/gem_version_check/formatter/pretty_print.rb +1 -1
- data/lib/gem_version_check/project.rb +5 -1
- data/lib/gem_version_check/version.rb +1 -1
- data/spec/dependency_spec.rb +40 -6
- data/spec/lockfile_fetch_spec.rb +1 -1
- data/spec/lockfile_spec.rb +4 -4
- metadata +28 -46
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: e6ea91e42ae06eeaac0ba2ab3bbc8a6d33b4b52f
|
4
|
+
data.tar.gz: f0f502a5510d19f00b80ea53f60a6b2c1ac99a26
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 24fb8176dfe8dde8317ca8ec669ea83d37c5a473c238275fc1eef06e58b6b87793917d99d39cd0ee8929330bf592a11b558a3257ccb833378861379e7898cfe9
|
7
|
+
data.tar.gz: 5cf7e9d32d83b32bd971f0b325f135c4c1b7eb07e09249975176fca2f050f14c1b3048845efb1d227e7a20bd2d4bf7883546800562816957cc3d67f47eb703e8
|
data/.gitignore
CHANGED
data/gem_version_check.gemspec
CHANGED
@@ -19,6 +19,7 @@ Gem::Specification.new do |s|
|
|
19
19
|
s.add_development_dependency "rake"
|
20
20
|
s.add_development_dependency "rspec", "~> 2.12.0"
|
21
21
|
s.add_development_dependency "mocha", "~> 0.13.0"
|
22
|
+
|
22
23
|
s.add_runtime_dependency "bundler"
|
23
24
|
s.add_runtime_dependency "progressbar"
|
24
25
|
end
|
@@ -14,7 +14,7 @@ module GemVersionCheck
|
|
14
14
|
end
|
15
15
|
end
|
16
16
|
|
17
|
-
private
|
17
|
+
private
|
18
18
|
|
19
19
|
def parse(params)
|
20
20
|
options = {}
|
@@ -33,10 +33,18 @@ module GemVersionCheck
|
|
33
33
|
options[:host] = host
|
34
34
|
end
|
35
35
|
|
36
|
+
opts.on("--sources my.gems.org,rubygems.org", String, "Sources to check for new gems versions") do |sources|
|
37
|
+
options[:sources] = sources
|
38
|
+
end
|
39
|
+
|
36
40
|
opts.on("--disable-progress-bar", "Disable progress bar") do |disable_progress_bar|
|
37
41
|
options[:disable_progress_bar] = disable_progress_bar
|
38
42
|
end
|
39
43
|
|
44
|
+
opts.on("--ignore-major-version-change", "Ignore changes of the major version") do |ignore_major_version_change|
|
45
|
+
options[:ignore_major_version_change] = ignore_major_version_change
|
46
|
+
end
|
47
|
+
|
40
48
|
opts.on("--output-format FORMAT", %w(json pretty), "Output format") do |output_format|
|
41
49
|
options[:output_format] = output_format
|
42
50
|
end
|
@@ -56,7 +64,9 @@ module GemVersionCheck
|
|
56
64
|
|
57
65
|
GemVersionCheck.configuration = {
|
58
66
|
:github_host => options[:host],
|
59
|
-
:
|
67
|
+
:sources => options[:sources],
|
68
|
+
:show_progress_bar => !options[:disable_progress_bar],
|
69
|
+
:ignore_major_version_change => options[:ignore_major_version_change]
|
60
70
|
}
|
61
71
|
|
62
72
|
[Array(project_names), options]
|
@@ -1,10 +1,12 @@
|
|
1
1
|
module GemVersionCheck
|
2
2
|
class Configuration
|
3
|
-
attr_reader :github_host, :show_progress_bar
|
3
|
+
attr_reader :github_host, :sources, :show_progress_bar, :ignore_major_version_change
|
4
4
|
|
5
5
|
def initialize(settings = {})
|
6
6
|
@github_host = settings[:github_host] || "github.com"
|
7
|
+
@sources = settings[:sources]
|
7
8
|
@show_progress_bar = settings[:show_progress_bar] || false
|
9
|
+
@ignore_major_version_change = settings[:ignore_major_version_change] || false
|
8
10
|
end
|
9
11
|
end
|
10
12
|
end
|
@@ -5,17 +5,19 @@ module GemVersionCheck
|
|
5
5
|
|
6
6
|
attr_reader :name, :expected_version, :version
|
7
7
|
|
8
|
-
def initialize(name, expected_version = nil)
|
8
|
+
def initialize(name, expected_version = nil, options = {})
|
9
9
|
@name = name
|
10
10
|
@expected_version = expected_version
|
11
|
+
@options = options
|
11
12
|
end
|
12
13
|
|
13
14
|
def check(lock_file)
|
14
15
|
@version = lock_file.version_for(@name)
|
15
16
|
@used = !!@version
|
16
17
|
return unless used?
|
17
|
-
|
18
|
+
|
18
19
|
@result = expected_version == @version
|
20
|
+
# puts "#{@result} = #{expected_version} == #{@version}"
|
19
21
|
end
|
20
22
|
|
21
23
|
def valid?
|
@@ -43,7 +45,35 @@ module GemVersionCheck
|
|
43
45
|
|
44
46
|
private
|
45
47
|
|
48
|
+
def ignore_major_version_change?
|
49
|
+
@options[:ignore_major_version_change]
|
50
|
+
end
|
51
|
+
|
52
|
+
def major_version
|
53
|
+
@version.split('.')[0]
|
54
|
+
end
|
55
|
+
|
46
56
|
def retrieve_spec
|
57
|
+
if GemVersionCheck.configuration.sources
|
58
|
+
Gem.sources = Gem::SourceList.from(GemVersionCheck.configuration.sources.split(','))
|
59
|
+
end
|
60
|
+
|
61
|
+
if ignore_major_version_change?
|
62
|
+
retrieve_latest_major_version_spec
|
63
|
+
else
|
64
|
+
retrieve_latest_spec
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
def retrieve_latest_major_version_spec
|
69
|
+
dependency = Gem::Dependency.new(name, "~>#{major_version}")
|
70
|
+
fetcher = Gem::SpecFetcher.fetcher
|
71
|
+
spec_tuples, = fetcher.spec_for_dependency(dependency)
|
72
|
+
spec, = spec_tuples.last
|
73
|
+
spec
|
74
|
+
end
|
75
|
+
|
76
|
+
def retrieve_latest_spec
|
47
77
|
Gem.latest_spec_for(@name)
|
48
78
|
end
|
49
79
|
|
@@ -22,7 +22,7 @@ module GemVersionCheck
|
|
22
22
|
@check_failed = false
|
23
23
|
result = []
|
24
24
|
with_progress_bar(spec_names) do |spec_name|
|
25
|
-
dependency = Dependency.new(spec_name)
|
25
|
+
dependency = Dependency.new(spec_name, nil, ignore_major_version_change: ignore_major_version_change?)
|
26
26
|
dependency.check(lock_file)
|
27
27
|
result << dependency
|
28
28
|
|
@@ -57,6 +57,10 @@ module GemVersionCheck
|
|
57
57
|
GemVersionCheck.configuration.show_progress_bar
|
58
58
|
end
|
59
59
|
|
60
|
+
def ignore_major_version_change?
|
61
|
+
GemVersionCheck.configuration.ignore_major_version_change
|
62
|
+
end
|
63
|
+
|
60
64
|
def spec_names
|
61
65
|
@spec_names.any? ? @spec_names : all_spec_names
|
62
66
|
end
|
data/spec/dependency_spec.rb
CHANGED
@@ -5,12 +5,12 @@ module GemVersionCheck
|
|
5
5
|
describe Dependency do
|
6
6
|
|
7
7
|
context "#check" do
|
8
|
-
let(:lock_file) { Lockfile.new(lock_file_content("
|
8
|
+
let(:lock_file) { Lockfile.new(lock_file_content("rails_app_example.lock")) }
|
9
|
+
|
10
|
+
let(:dependency) { Dependency.new("activesupport", "3.2.8") }
|
11
|
+
let(:invalid_dependency) { Dependency.new("activesupport", "3.2.9") }
|
12
|
+
let(:not_used_dependency) { Dependency.new("exceptionist", "3.2.8") }
|
9
13
|
|
10
|
-
let(:dependency) { Dependency.new("activesupport", "3.2.9") }
|
11
|
-
let(:invalid_dependency) { Dependency.new("activesupport", "3.2.10") }
|
12
|
-
let(:not_used_dependency) { Dependency.new("rails", "3.2.9") }
|
13
|
-
|
14
14
|
context "#valid?" do
|
15
15
|
it "is valid if current version == expected version" do
|
16
16
|
dependency.check(lock_file)
|
@@ -21,6 +21,40 @@ module GemVersionCheck
|
|
21
21
|
invalid_dependency.check(lock_file)
|
22
22
|
invalid_dependency.should_not be_valid
|
23
23
|
end
|
24
|
+
|
25
|
+
context "remote dependency" do
|
26
|
+
it "is valid when using the latest spec" do
|
27
|
+
dependency = Dependency.new("activesupport", nil)
|
28
|
+
dependency.expects(:retrieve_latest_spec).returns(Gem::Specification.new('activesupport', '3.2.8'))
|
29
|
+
|
30
|
+
dependency.check(lock_file)
|
31
|
+
dependency.should be_valid
|
32
|
+
end
|
33
|
+
|
34
|
+
it "is invalid when using the latest spec" do
|
35
|
+
dependency = Dependency.new("activesupport", nil)
|
36
|
+
dependency.expects(:retrieve_latest_spec).returns(Gem::Specification.new('activesupport', '3.2.9'))
|
37
|
+
|
38
|
+
dependency.check(lock_file)
|
39
|
+
dependency.should_not be_valid
|
40
|
+
end
|
41
|
+
|
42
|
+
it "is valid when ignoring the major version" do
|
43
|
+
dependency = Dependency.new("activesupport", nil, :ignore_major_version_change => true)
|
44
|
+
dependency.expects(:retrieve_latest_major_version_spec).returns(Gem::Specification.new('activesupport', '3.2.8'))
|
45
|
+
|
46
|
+
dependency.check(lock_file)
|
47
|
+
dependency.should be_valid
|
48
|
+
end
|
49
|
+
|
50
|
+
it "is invalid when ignoring the major version" do
|
51
|
+
dependency = Dependency.new("activesupport", nil, :ignore_major_version_change => true)
|
52
|
+
dependency.expects(:retrieve_latest_major_version_spec).returns(Gem::Specification.new('activesupport', '3.2.17'))
|
53
|
+
|
54
|
+
dependency.check(lock_file)
|
55
|
+
dependency.should_not be_valid
|
56
|
+
end
|
57
|
+
end
|
24
58
|
end
|
25
59
|
|
26
60
|
context "#used?" do
|
@@ -42,7 +76,7 @@ module GemVersionCheck
|
|
42
76
|
end
|
43
77
|
|
44
78
|
it "returns true if gem was not found on gems server" do
|
45
|
-
dep = Dependency.new("non_existing_gem")
|
79
|
+
dep = Dependency.new("non_existing_gem")
|
46
80
|
dep.expects(:retrieve_spec).returns(nil)
|
47
81
|
dep.check(lock_file)
|
48
82
|
|
data/spec/lockfile_fetch_spec.rb
CHANGED
@@ -21,7 +21,7 @@ module GemVersionCheck
|
|
21
21
|
context "#lock_file" do
|
22
22
|
it "downloads lock file content and returns lock_file" do
|
23
23
|
fetcher = LockfileFetcher.new(redirect_url)
|
24
|
-
fetcher.expects(:request).returns(lock_file_content("
|
24
|
+
fetcher.expects(:request).returns(lock_file_content("rails_app_example.lock"))
|
25
25
|
Bundler::LockfileParser.new(fetcher.content).specs.size.should > 0
|
26
26
|
end
|
27
27
|
|
data/spec/lockfile_spec.rb
CHANGED
@@ -3,18 +3,18 @@ require 'spec_helper'
|
|
3
3
|
|
4
4
|
module GemVersionCheck
|
5
5
|
describe Lockfile do
|
6
|
-
let(:lockfile) { Lockfile.new(lock_file_content("
|
6
|
+
let(:lockfile) { Lockfile.new(lock_file_content("rails_app_example.lock")) }
|
7
7
|
|
8
8
|
describe "#spec_names" do
|
9
9
|
it "returns all spec names" do
|
10
|
-
lockfile.spec_names.size.should ==
|
10
|
+
lockfile.spec_names.size.should == 47
|
11
11
|
lockfile.spec_names.should include("activesupport")
|
12
12
|
end
|
13
13
|
end
|
14
14
|
|
15
15
|
describe "#version_for" do
|
16
16
|
it "returns spec for name" do
|
17
|
-
lockfile.version_for("activesupport").should == "3.2.
|
17
|
+
lockfile.version_for("activesupport").should == "3.2.8"
|
18
18
|
end
|
19
19
|
|
20
20
|
it "returns nil if spec does not exist" do
|
@@ -24,7 +24,7 @@ module GemVersionCheck
|
|
24
24
|
|
25
25
|
describe "#total" do
|
26
26
|
it "returns total number of spec" do
|
27
|
-
lockfile.total.should ==
|
27
|
+
lockfile.total.should == 47
|
28
28
|
end
|
29
29
|
end
|
30
30
|
end
|
metadata
CHANGED
@@ -1,96 +1,85 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gem_version_check
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
5
|
-
prerelease:
|
4
|
+
version: 0.1.0
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Frederik Dietz
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date:
|
11
|
+
date: 2014-02-26 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: rake
|
16
|
-
|
17
|
-
none: false
|
15
|
+
version_requirements: !ruby/object:Gem::Requirement
|
18
16
|
requirements:
|
19
|
-
- -
|
17
|
+
- - '>='
|
20
18
|
- !ruby/object:Gem::Version
|
21
19
|
version: '0'
|
22
20
|
type: :development
|
23
|
-
|
24
|
-
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
21
|
+
requirement: !ruby/object:Gem::Requirement
|
26
22
|
requirements:
|
27
|
-
- -
|
23
|
+
- - '>='
|
28
24
|
- !ruby/object:Gem::Version
|
29
25
|
version: '0'
|
26
|
+
prerelease: false
|
30
27
|
- !ruby/object:Gem::Dependency
|
31
28
|
name: rspec
|
32
|
-
|
33
|
-
none: false
|
29
|
+
version_requirements: !ruby/object:Gem::Requirement
|
34
30
|
requirements:
|
35
31
|
- - ~>
|
36
32
|
- !ruby/object:Gem::Version
|
37
33
|
version: 2.12.0
|
38
34
|
type: :development
|
39
|
-
|
40
|
-
version_requirements: !ruby/object:Gem::Requirement
|
41
|
-
none: false
|
35
|
+
requirement: !ruby/object:Gem::Requirement
|
42
36
|
requirements:
|
43
37
|
- - ~>
|
44
38
|
- !ruby/object:Gem::Version
|
45
39
|
version: 2.12.0
|
40
|
+
prerelease: false
|
46
41
|
- !ruby/object:Gem::Dependency
|
47
42
|
name: mocha
|
48
|
-
|
49
|
-
none: false
|
43
|
+
version_requirements: !ruby/object:Gem::Requirement
|
50
44
|
requirements:
|
51
45
|
- - ~>
|
52
46
|
- !ruby/object:Gem::Version
|
53
47
|
version: 0.13.0
|
54
48
|
type: :development
|
55
|
-
|
56
|
-
version_requirements: !ruby/object:Gem::Requirement
|
57
|
-
none: false
|
49
|
+
requirement: !ruby/object:Gem::Requirement
|
58
50
|
requirements:
|
59
51
|
- - ~>
|
60
52
|
- !ruby/object:Gem::Version
|
61
53
|
version: 0.13.0
|
54
|
+
prerelease: false
|
62
55
|
- !ruby/object:Gem::Dependency
|
63
56
|
name: bundler
|
64
|
-
|
65
|
-
none: false
|
57
|
+
version_requirements: !ruby/object:Gem::Requirement
|
66
58
|
requirements:
|
67
|
-
- -
|
59
|
+
- - '>='
|
68
60
|
- !ruby/object:Gem::Version
|
69
61
|
version: '0'
|
70
62
|
type: :runtime
|
71
|
-
|
72
|
-
version_requirements: !ruby/object:Gem::Requirement
|
73
|
-
none: false
|
63
|
+
requirement: !ruby/object:Gem::Requirement
|
74
64
|
requirements:
|
75
|
-
- -
|
65
|
+
- - '>='
|
76
66
|
- !ruby/object:Gem::Version
|
77
67
|
version: '0'
|
68
|
+
prerelease: false
|
78
69
|
- !ruby/object:Gem::Dependency
|
79
70
|
name: progressbar
|
80
|
-
|
81
|
-
none: false
|
71
|
+
version_requirements: !ruby/object:Gem::Requirement
|
82
72
|
requirements:
|
83
|
-
- -
|
73
|
+
- - '>='
|
84
74
|
- !ruby/object:Gem::Version
|
85
75
|
version: '0'
|
86
76
|
type: :runtime
|
87
|
-
|
88
|
-
version_requirements: !ruby/object:Gem::Requirement
|
89
|
-
none: false
|
77
|
+
requirement: !ruby/object:Gem::Requirement
|
90
78
|
requirements:
|
91
|
-
- -
|
79
|
+
- - '>='
|
92
80
|
- !ruby/object:Gem::Version
|
93
81
|
version: '0'
|
82
|
+
prerelease: false
|
94
83
|
description: Check for a given github project if gem dependencies are up to date
|
95
84
|
email:
|
96
85
|
- fdietz@github.com
|
@@ -127,33 +116,26 @@ files:
|
|
127
116
|
- spec/stubs/rails_app_example.lock
|
128
117
|
homepage: ''
|
129
118
|
licenses: []
|
119
|
+
metadata: {}
|
130
120
|
post_install_message:
|
131
121
|
rdoc_options: []
|
132
122
|
require_paths:
|
133
123
|
- lib
|
134
124
|
required_ruby_version: !ruby/object:Gem::Requirement
|
135
|
-
none: false
|
136
125
|
requirements:
|
137
|
-
- -
|
126
|
+
- - '>='
|
138
127
|
- !ruby/object:Gem::Version
|
139
128
|
version: '0'
|
140
|
-
segments:
|
141
|
-
- 0
|
142
|
-
hash: -4198302242782915360
|
143
129
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
144
|
-
none: false
|
145
130
|
requirements:
|
146
|
-
- -
|
131
|
+
- - '>='
|
147
132
|
- !ruby/object:Gem::Version
|
148
133
|
version: '0'
|
149
|
-
segments:
|
150
|
-
- 0
|
151
|
-
hash: -4198302242782915360
|
152
134
|
requirements: []
|
153
135
|
rubyforge_project:
|
154
|
-
rubygems_version: 1.
|
136
|
+
rubygems_version: 2.1.11
|
155
137
|
signing_key:
|
156
|
-
specification_version:
|
138
|
+
specification_version: 4
|
157
139
|
summary: Check your gem dependencies
|
158
140
|
test_files:
|
159
141
|
- spec/configuration_spec.rb
|