gem_version_check 0.0.10 → 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|