gems-status 0.49.0 → 0.50.0
Sign up to get free protection for your applications and to get access to all the features.
- data/VERSION +1 -1
- data/bin/gems-status +5 -2
- data/lib/gems-status.rb +5 -5
- data/lib/gems-status/checkers.rb +3 -3
- data/lib/gems-status/checkers/has_a_license.rb +12 -0
- data/lib/gems-status/checkers/is_not_gpl.rb +15 -0
- data/lib/gems-status/checkers/is_rubygems.rb +36 -0
- data/lib/gems-status/checkers/not_a_security_alert_checker.rb +1 -6
- data/lib/gems-status/checkers/print_gem_versions.rb +1 -7
- data/lib/gems-status/gem_simple.rb +6 -28
- data/lib/gems-status/gems_composite_command.rb +20 -75
- data/lib/gems-status/sources.rb +0 -2
- data/lib/gems-status/sources/lockfile_gems.rb +23 -40
- data/lib/gems-status/text_view.rb +40 -0
- data/lib/gems-status/utils.rb +20 -0
- data/test/Gemfile +1 -7
- data/test/Gemfile.lock +32 -62
- data/test/test-gems_composite_command.rb +0 -38
- data/test/test-helper.rb +6 -2
- data/test/test-lockfile_gems.rb +11 -37
- metadata +6 -17
- data/lib/gems-status/checkers/exists_in_upstream.rb +0 -25
- data/lib/gems-status/checkers/not_native_gem_checker.rb +0 -44
- data/lib/gems-status/checkers/not_rails_checker.rb +0 -25
- data/lib/gems-status/html_view.rb +0 -272
- data/lib/gems-status/sources/obs_gems.rb +0 -112
- data/lib/gems-status/sources/ruby_gems_gems.rb +0 -51
- data/test/test-not_rails_checker.rb +0 -56
- data/test/test-obs_gems.rb +0 -40
- data/test/test-ruby_gems_gems.rb +0 -32
data/lib/gems-status/utils.rb
CHANGED
@@ -10,6 +10,15 @@ module GemsStatus
|
|
10
10
|
@@licenses = {}
|
11
11
|
@@keys = {}
|
12
12
|
@@gems = {}
|
13
|
+
@@known_licenses = {}
|
14
|
+
|
15
|
+
def Utils.known_licenses=(licenses)
|
16
|
+
@@known_licenses = licenses
|
17
|
+
end
|
18
|
+
|
19
|
+
def Utils.known_licenses
|
20
|
+
return @@known_licenses
|
21
|
+
end
|
13
22
|
|
14
23
|
def Utils.errors
|
15
24
|
return @@errors
|
@@ -54,6 +63,7 @@ module GemsStatus
|
|
54
63
|
end
|
55
64
|
|
56
65
|
def Utils.download_license(name, version, gems_url)
|
66
|
+
version = version.to_s if version.is_a? Gem::Version
|
57
67
|
key = "#{name}-#{version}-#{gems_url.gsub("/", "_").gsub(":", "_")}"
|
58
68
|
return @@licenses[key] if @@licenses[key]
|
59
69
|
begin
|
@@ -63,6 +73,16 @@ module GemsStatus
|
|
63
73
|
return nil
|
64
74
|
end
|
65
75
|
license = Gem::Format.from_file_by_path(gem_file_path).spec.license
|
76
|
+
if !license || license.empty?
|
77
|
+
if @@known_licenses[name]
|
78
|
+
if @@known_licenses[name][version]
|
79
|
+
license = @@known_licenses[name][version]
|
80
|
+
Utils::log_debug "get license from known licenses for #{name} #{version}"
|
81
|
+
else #@@known_licenses[name] but different version
|
82
|
+
Utils::log_debug "I can't find license for #{name} but I have info from another version #{@@known_licenses[name].sort.last}"
|
83
|
+
end
|
84
|
+
end
|
85
|
+
end
|
66
86
|
@@licenses[key] = license
|
67
87
|
return license
|
68
88
|
end
|
data/test/Gemfile
CHANGED
data/test/Gemfile.lock
CHANGED
@@ -1,70 +1,40 @@
|
|
1
1
|
GEM
|
2
2
|
remote: http://rubygems.org/
|
3
3
|
specs:
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
rack (1.4.1)
|
36
|
-
rack-cache (1.1)
|
37
|
-
rack (>= 0.4)
|
38
|
-
rack-ssl (1.3.2)
|
39
|
-
rack
|
40
|
-
rack-test (0.6.1)
|
41
|
-
rack (>= 1.0)
|
42
|
-
railties (3.2.1)
|
43
|
-
actionpack (= 3.2.1)
|
44
|
-
activesupport (= 3.2.1)
|
45
|
-
rack-ssl (~> 1.3.2)
|
46
|
-
rake (>= 0.8.7)
|
47
|
-
rdoc (~> 3.4)
|
48
|
-
thor (~> 0.14.6)
|
49
|
-
rake (0.9.2.2)
|
50
|
-
rdoc (3.12)
|
51
|
-
json (~> 1.4)
|
52
|
-
sprockets (2.1.2)
|
53
|
-
hike (~> 1.2)
|
54
|
-
rack (~> 1.0)
|
55
|
-
tilt (~> 1.1, != 1.3.0)
|
56
|
-
system_timer (1.2.4)
|
57
|
-
thor (0.14.6)
|
58
|
-
tilt (1.3.3)
|
59
|
-
xml-simple (1.1.1)
|
4
|
+
gems-status (0.549.0)
|
5
|
+
bundler
|
6
|
+
git
|
7
|
+
gmail
|
8
|
+
json
|
9
|
+
mercurial-ruby
|
10
|
+
xml-simple
|
11
|
+
git (1.2.5)
|
12
|
+
gmail (0.4.0)
|
13
|
+
gmail_xoauth (>= 0.3.0)
|
14
|
+
mail (>= 2.2.1)
|
15
|
+
mime (>= 0.1)
|
16
|
+
gmail_xoauth (0.4.1)
|
17
|
+
oauth (>= 0.3.6)
|
18
|
+
i18n (0.6.4)
|
19
|
+
json (1.7.7)
|
20
|
+
mail (2.5.3)
|
21
|
+
i18n (>= 0.4.0)
|
22
|
+
mime-types (~> 1.16)
|
23
|
+
treetop (~> 1.4.8)
|
24
|
+
mercurial-ruby (0.7.9)
|
25
|
+
open4 (~> 1.3.0)
|
26
|
+
mime (0.1)
|
27
|
+
mime-types (1.23)
|
28
|
+
oauth (0.4.7)
|
29
|
+
open4 (1.3.0)
|
30
|
+
polyglot (0.3.3)
|
31
|
+
treetop (1.4.12)
|
32
|
+
polyglot
|
33
|
+
polyglot (>= 0.3.1)
|
34
|
+
xml-simple (1.1.2)
|
60
35
|
|
61
36
|
PLATFORMS
|
62
37
|
ruby
|
63
38
|
|
64
39
|
DEPENDENCIES
|
65
|
-
|
66
|
-
factory_girl_rails
|
67
|
-
fakefs
|
68
|
-
gem2rpm
|
69
|
-
system_timer
|
70
|
-
xml-simple
|
40
|
+
gems-status
|
@@ -10,43 +10,5 @@ module GemsStatus
|
|
10
10
|
end
|
11
11
|
|
12
12
|
class TestGemsCompositeCommand < Test::Unit::TestCase
|
13
|
-
def test_common_key_in_empty_results
|
14
|
-
gemscompositecommand = GemsCompositeCommand.new('id')
|
15
|
-
result = gemscompositecommand.common_key?("this key does not exists")
|
16
|
-
assert(!result)
|
17
|
-
end
|
18
|
-
def test_common_key_in_zero_coincidences_one_result
|
19
|
-
gemscompositecommand = GemsCompositeCommandTest.new('id')
|
20
|
-
gemscompositecommand.results['id'] = {"a key"=>"a value"}
|
21
|
-
result = gemscompositecommand.common_key?("this key does not exists")
|
22
|
-
assert(!result)
|
23
|
-
end
|
24
|
-
def test_common_key_in_zero_coincidences_two_results
|
25
|
-
gemscompositecommand = GemsCompositeCommandTest.new('id')
|
26
|
-
gemscompositecommand.results['id'] = {"a key"=>"a value"}
|
27
|
-
gemscompositecommand.results['id2'] = {"another key"=>"another value"}
|
28
|
-
result = gemscompositecommand.common_key?("this key does not exists")
|
29
|
-
assert(!result)
|
30
|
-
end
|
31
|
-
def test_common_key_in_one_coincidence_one_results
|
32
|
-
gemscompositecommand = GemsCompositeCommandTest.new('id')
|
33
|
-
gemscompositecommand.results['id']= {"a key"=>"a value"}
|
34
|
-
result = gemscompositecommand.common_key?("a key")
|
35
|
-
assert(!result)
|
36
|
-
end
|
37
|
-
def test_common_key_in_one_coincidence_two_results
|
38
|
-
gemscompositecommand = GemsCompositeCommandTest.new('id')
|
39
|
-
gemscompositecommand.results['id']= {"a key"=>"a value"}
|
40
|
-
gemscompositecommand.results['id2']= {"another key"=>"another value"}
|
41
|
-
result = gemscompositecommand.common_key?("a key")
|
42
|
-
assert(!result)
|
43
|
-
end
|
44
|
-
def test_common_key_in_two_coincidence_two_results
|
45
|
-
gemscompositecommand = GemsCompositeCommandTest.new('id')
|
46
|
-
gemscompositecommand.results['id']= {"a key"=>"a value"}
|
47
|
-
gemscompositecommand.results['id2']= {"a key"=>"another value"}
|
48
|
-
result = gemscompositecommand.common_key?("a key")
|
49
|
-
assert(result)
|
50
|
-
end
|
51
13
|
end
|
52
14
|
end
|
data/test/test-helper.rb
CHANGED
data/test/test-lockfile_gems.rb
CHANGED
@@ -11,7 +11,7 @@ module GemsStatus
|
|
11
11
|
def initialize
|
12
12
|
dir=File.expand_path(File.dirname(__FILE__))
|
13
13
|
puts "DEBUG: dir : #{dir} #{dir.class.name}"
|
14
|
-
@
|
14
|
+
@filename = "#{dir}/Gemfile.lock.test"
|
15
15
|
@gems_url = ""
|
16
16
|
@result = {}
|
17
17
|
end
|
@@ -22,54 +22,28 @@ module GemsStatus
|
|
22
22
|
lockfilegems = LockfileGemsTest.new
|
23
23
|
lockfilegems.execute
|
24
24
|
assert(lockfilegems.result.length == 6)
|
25
|
-
result = lockfilegems.result["test"]
|
25
|
+
result = lockfilegems.result["test"].name
|
26
26
|
assert_equal("test",result)
|
27
|
-
result = lockfilegems.result["test"]
|
27
|
+
result = lockfilegems.result["test"].version
|
28
28
|
assert_equal(Gem::Version.new("0.8.6"), result)
|
29
|
-
result = lockfilegems.result["test2"]
|
29
|
+
result = lockfilegems.result["test2"].name
|
30
30
|
assert_equal("test2",result)
|
31
|
-
result = lockfilegems.result["test2"]
|
31
|
+
result = lockfilegems.result["test2"].version
|
32
32
|
assert_equal(Gem::Version.new("1.2.3"), result)
|
33
|
-
result = lockfilegems.result["test3"]
|
33
|
+
result = lockfilegems.result["test3"].name
|
34
34
|
assert_equal("test3",result)
|
35
|
-
result = lockfilegems.result["test3"]
|
35
|
+
result = lockfilegems.result["test3"].version
|
36
36
|
assert_equal(Gem::Version.new("1.2.3"), result)
|
37
|
-
result = lockfilegems.result["test4"]
|
37
|
+
result = lockfilegems.result["test4"].name
|
38
38
|
assert_equal("test4",result)
|
39
|
-
result = lockfilegems.result["test4"]
|
39
|
+
result = lockfilegems.result["test4"].version
|
40
40
|
assert_equal(Gem::Version.new("1.2.3"), result)
|
41
|
-
result = lockfilegems.result["from_git"]
|
41
|
+
result = lockfilegems.result["from_git"].version
|
42
42
|
assert_equal(Gem::Version.new("1.0.3"), result)
|
43
|
-
result = lockfilegems.result["dep_from_git"]
|
43
|
+
result = lockfilegems.result["dep_from_git"].version
|
44
44
|
assert_equal(Gem::Version.new("1.0.0"), result)
|
45
45
|
end
|
46
46
|
|
47
|
-
def test_get_rubygems_dependencies
|
48
|
-
lockfilegems = LockfileGemsTest.new
|
49
|
-
lockfilegems.execute
|
50
|
-
result = lockfilegems.result["test"][0].dependencies
|
51
|
-
assert(result)
|
52
|
-
result = lockfilegems.result["test"][0].dependencies.length
|
53
|
-
assert_equal(3, result)
|
54
|
-
result = lockfilegems.result["test"][0].dependencies
|
55
|
-
assert_equal(
|
56
|
-
Gem::Dependency.new("test2", Gem::Requirement.new(["= 1.2.3"])),
|
57
|
-
result[0])
|
58
|
-
assert_equal(
|
59
|
-
Gem::Dependency.new("test3", Gem::Requirement.new(["= 1.2.3"])),
|
60
|
-
result[1])
|
61
|
-
assert_equal(
|
62
|
-
Gem::Dependency.new("test4", Gem::Requirement.new(["= 1.2.3"])),
|
63
|
-
result[2])
|
64
|
-
end
|
65
|
-
|
66
|
-
def test_from_git
|
67
|
-
lockfilegems = LockfileGemsTest.new
|
68
|
-
lockfilegems.execute
|
69
|
-
result = lockfilegems.result["from_git"][0].gems_url
|
70
|
-
assert(result.start_with?("git://"))
|
71
|
-
assert(lockfilegems.result["from_git"][0].from_git?)
|
72
|
-
end
|
73
47
|
end
|
74
48
|
|
75
49
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gems-status
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.50.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-
|
12
|
+
date: 2013-05-01 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: xml-simple
|
@@ -185,37 +185,32 @@ files:
|
|
185
185
|
- lib/gems-status/sources.rb
|
186
186
|
- lib/gems-status/checkers.rb
|
187
187
|
- lib/gems-status/gem_simple.rb
|
188
|
-
- lib/gems-status/sources/ruby_gems_gems.rb
|
189
188
|
- lib/gems-status/sources/lockfile_gems.rb
|
190
|
-
- lib/gems-status/sources/obs_gems.rb
|
191
189
|
- lib/gems-status/sources/ruby_gems_gems_gem_simple.rb
|
192
190
|
- lib/gems-status/gems_command.rb
|
193
|
-
- lib/gems-status/
|
191
|
+
- lib/gems-status/text_view.rb
|
194
192
|
- lib/gems-status/gems_status_metadata.rb
|
195
193
|
- lib/gems-status/utils.rb
|
196
194
|
- lib/gems-status/checkers/print_gem_versions.rb
|
197
|
-
- lib/gems-status/checkers/
|
198
|
-
- lib/gems-status/checkers/exists_in_upstream.rb
|
195
|
+
- lib/gems-status/checkers/has_a_license.rb
|
199
196
|
- lib/gems-status/checkers/scm_security_messages.rb
|
200
197
|
- lib/gems-status/checkers/security_alert.rb
|
201
|
-
- lib/gems-status/checkers/
|
198
|
+
- lib/gems-status/checkers/is_not_gpl.rb
|
202
199
|
- lib/gems-status/checkers/scm_check_messages.rb
|
203
200
|
- lib/gems-status/checkers/svn_check_messages.rb
|
204
201
|
- lib/gems-status/checkers/not_a_security_alert_checker.rb
|
205
202
|
- lib/gems-status/checkers/gem_checker.rb
|
206
203
|
- lib/gems-status/checkers/hg_check_messages.rb
|
207
204
|
- lib/gems-status/checkers/git_check_messages.rb
|
205
|
+
- lib/gems-status/checkers/is_rubygems.rb
|
208
206
|
- lib/gems-status/gems_composite_command.rb
|
209
207
|
- bin/gems-status
|
210
|
-
- test/test-not_rails_checker.rb
|
211
208
|
- test/Gemfile
|
212
209
|
- test/test-gems_composite_command.rb
|
213
210
|
- test/Gemfile.lock
|
214
211
|
- test/test-gems_command.rb
|
215
212
|
- test/Gemfile.lock.test
|
216
213
|
- test/test-utils.rb
|
217
|
-
- test/test-ruby_gems_gems.rb
|
218
|
-
- test/test-obs_gems.rb
|
219
214
|
- test/test-helper.rb
|
220
215
|
- test/test-lockfile_gems.rb
|
221
216
|
- VERSION
|
@@ -232,18 +227,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
232
227
|
- - ! '>='
|
233
228
|
- !ruby/object:Gem::Version
|
234
229
|
version: '0'
|
235
|
-
segments:
|
236
|
-
- 0
|
237
|
-
hash: 1647439834923323251
|
238
230
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
239
231
|
none: false
|
240
232
|
requirements:
|
241
233
|
- - ! '>='
|
242
234
|
- !ruby/object:Gem::Version
|
243
235
|
version: '0'
|
244
|
-
segments:
|
245
|
-
- 0
|
246
|
-
hash: 1647439834923323251
|
247
236
|
requirements: []
|
248
237
|
rubyforge_project:
|
249
238
|
rubygems_version: 1.8.25
|
@@ -1,25 +0,0 @@
|
|
1
|
-
require 'rubygems'
|
2
|
-
require 'open-uri'
|
3
|
-
require 'gems-status/checkers/gem_checker'
|
4
|
-
require 'gems-status/utils'
|
5
|
-
|
6
|
-
module GemsStatus
|
7
|
-
|
8
|
-
class ExistsInUpstream < GemChecker
|
9
|
-
def check?(gem)
|
10
|
-
Utils::log_debug("Looking for #{gem.name}")
|
11
|
-
result = nil
|
12
|
-
gem_uri = "#{gem.gems_url}/#{gem.name}-#{gem.version}.gem"
|
13
|
-
begin
|
14
|
-
source = open(gem_uri)
|
15
|
-
return true
|
16
|
-
rescue
|
17
|
-
return false
|
18
|
-
end
|
19
|
-
end
|
20
|
-
def description
|
21
|
-
"This gem does not exist in upstream: "
|
22
|
-
end
|
23
|
-
end
|
24
|
-
|
25
|
-
end
|
@@ -1,44 +0,0 @@
|
|
1
|
-
require 'rubygems/format'
|
2
|
-
require 'rubygems/old_format'
|
3
|
-
require 'open-uri'
|
4
|
-
require 'gems-status/checkers/gem_checker'
|
5
|
-
|
6
|
-
module GemsStatus
|
7
|
-
|
8
|
-
class NotNativeGemChecker < GemChecker
|
9
|
-
def check?(gem)
|
10
|
-
result = nil
|
11
|
-
gem_uri = URI.parse("#{gem.gems_url}/#{gem.name}-#{gem.version}.gem" )
|
12
|
-
uri_debug = gem_uri.clone
|
13
|
-
uri_debug.password = "********" if uri_debug.password
|
14
|
-
Utils::log_debug "download #{@name} from #{uri_debug}"
|
15
|
-
begin
|
16
|
-
if gem_uri.user && gem_uri.password
|
17
|
-
source = open(gem_uri.scheme + "://" + gem_uri.host + "/" + gem_uri.path,
|
18
|
-
Gem.binary_mode,
|
19
|
-
:http_basic_authentication=>[gem_uri.user, gem_uri.password]) do |io|
|
20
|
-
result = Gem::Format.from_io io
|
21
|
-
end
|
22
|
-
else
|
23
|
-
source = open(gem_uri, Gem.binary_mode) do |io|
|
24
|
-
result = Gem::Format.from_io io
|
25
|
-
end
|
26
|
-
end
|
27
|
-
rescue IOError
|
28
|
-
#bug on open-uri:137 on closing strings
|
29
|
-
#it should be
|
30
|
-
#io.close if io && !io.closed?
|
31
|
-
#or is a bug on rubygems???
|
32
|
-
rescue => e
|
33
|
-
Utils::log_error(gem.name, "There was a problem opening #{gem_uri} #{e.class} #{e.message}")
|
34
|
-
end
|
35
|
-
return false unless result
|
36
|
-
return result.spec.extensions.empty?
|
37
|
-
end
|
38
|
-
|
39
|
-
def description
|
40
|
-
"This gem is a native gem or could not get specs: "
|
41
|
-
end
|
42
|
-
end
|
43
|
-
|
44
|
-
end
|
@@ -1,25 +0,0 @@
|
|
1
|
-
require 'rubygems/format'
|
2
|
-
require 'rubygems/old_format'
|
3
|
-
require 'open-uri'
|
4
|
-
require 'gems-status/checkers/gem_checker'
|
5
|
-
|
6
|
-
module GemsStatus
|
7
|
-
|
8
|
-
class NotRailsChecker < GemChecker
|
9
|
-
RAILS_GEMS = ["rails", "railties","activesupport"]
|
10
|
-
def check?(gem)
|
11
|
-
return false if !gem.dependencies
|
12
|
-
gem.dependencies.each do |dep|
|
13
|
-
if RAILS_GEMS.include?(dep.name)
|
14
|
-
return false
|
15
|
-
end
|
16
|
-
end
|
17
|
-
return true
|
18
|
-
end
|
19
|
-
|
20
|
-
def description
|
21
|
-
"This gem depends on rails or could not get spec: "
|
22
|
-
end
|
23
|
-
end
|
24
|
-
|
25
|
-
end
|