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.
@@ -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