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.
@@ -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
@@ -1,3 +1,9 @@
1
1
  .rvmrc
2
+ .ruby-version
3
+ .ruby-gemset
4
+ .rspec
5
+
2
6
  Gemfile.lock
7
+ .bundle
8
+
3
9
  pkg
@@ -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
- :show_progress_bar => !options[:disable_progress_bar]
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
 
@@ -46,7 +46,7 @@ module GemVersionCheck
46
46
  end
47
47
 
48
48
  def invalid_dependency(dep)
49
- "#{dep.expected_version} != #{red}#{dep.version}#{black}"
49
+ "#{dep.expected_version} != #{red}#{dep.version}#{black}"
50
50
  end
51
51
 
52
52
  def black
@@ -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
@@ -1,3 +1,3 @@
1
1
  module GemVersionCheck
2
- VERSION = "0.0.10"
2
+ VERSION = "0.1.0"
3
3
  end
@@ -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("Gemfile.lock")) }
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
 
@@ -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("Gemfile.lock"))
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
 
@@ -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("Gemfile.lock")) }
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 == 12
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.9"
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 == 12
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.10
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: 2012-11-22 00:00:00.000000000 Z
11
+ date: 2014-02-26 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: rake
16
- requirement: !ruby/object:Gem::Requirement
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
- prerelease: false
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
- requirement: !ruby/object:Gem::Requirement
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
- prerelease: false
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
- requirement: !ruby/object:Gem::Requirement
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
- prerelease: false
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
- requirement: !ruby/object:Gem::Requirement
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
- prerelease: false
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
- requirement: !ruby/object:Gem::Requirement
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
- prerelease: false
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.8.24
136
+ rubygems_version: 2.1.11
155
137
  signing_key:
156
- specification_version: 3
138
+ specification_version: 4
157
139
  summary: Check your gem dependencies
158
140
  test_files:
159
141
  - spec/configuration_spec.rb