gems-status 0.2.1 → 0.2.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -92,7 +92,7 @@ class GemsCompositeCommand < GemsCommand
92
92
  end
93
93
  @results[@target].each do |k,v|
94
94
  if !common_key?(k) then
95
- $stderr.puts "ERROR: #{k} in #{@target} but not found in all the sources!"
95
+ Utils.log_error "ERROR: #{k} in #{@target} but not found in all the sources!"
96
96
  next
97
97
  end
98
98
  if equal_gems?(k) then
data/lib/gems_status.rb CHANGED
@@ -21,7 +21,7 @@ class GemStatus
21
21
  begin
22
22
  @conf = YAML::load(File::open(conf_file))
23
23
  rescue
24
- $stderr.puts "ERROR: There was a problem opening #{conf_file}"
24
+ Utils.log_error "ERROR: There was a problem opening #{conf_file}"
25
25
  end
26
26
  end
27
27
 
@@ -1,3 +1,3 @@
1
1
  module GemsStatusMetadata
2
- VERSION = "0.2.1"
2
+ VERSION = "0.2.2"
3
3
  end
data/lib/lockfile_gems.rb CHANGED
@@ -24,13 +24,13 @@ class LockfileGems < GemsCommand
24
24
  begin
25
25
  data = File.open(@filename).read
26
26
  rescue
27
- $stderr.puts "ERROR: There was a problem opening file #{filename} "
27
+ Utils.log_error "ERROR: There was a problem opening file #{filename} "
28
28
  end
29
29
  return data
30
30
  end
31
31
 
32
32
  def execute
33
- $stderr.puts "DEBUG: reading #{@filename}"
33
+ Utils.log_error "DEBUG: reading #{@filename}"
34
34
  file_data = get_data
35
35
  if file_data.empty?
36
36
  return
@@ -17,7 +17,7 @@ class NotNativeGemChecker < GemChecker
17
17
  #io.close if io && !io.closed?
18
18
  #or is a bug on rubygems???
19
19
  rescue => e
20
- $stderr.puts "ERROR: There was a problem opening #{gem_uri} #{e.class} #{e.message}"
20
+ Utils.log_error "ERROR: There was a problem opening #{gem_uri} #{e.class} #{e.message}"
21
21
  end
22
22
  return false unless result
23
23
  return result.spec.extensions.empty?
@@ -17,7 +17,7 @@ class NotRailsChecker < GemChecker
17
17
  #io.close if io && !io.closed?
18
18
  #or is a bug on rubygems???
19
19
  rescue => e
20
- $stderr.puts "ERROR: There was a problem opening #{gem_uri} #{e.class} #{e.message}"
20
+ Utils.log_error "ERROR: There was a problem opening #{gem_uri} #{e.class} #{e.message}"
21
21
  end
22
22
  return false unless result
23
23
  result.spec.dependencies.each do |gem|
data/lib/obs_gems.rb CHANGED
@@ -20,25 +20,25 @@ class OBSGems < GemsCommand
20
20
 
21
21
  def parse_link(linkinfo)
22
22
  if linkinfo.length > 1 then
23
- $stderr.puts "ERROR: There is more than one linkinfo element"
23
+ Utils.log_error "ERROR: There is more than one linkinfo element"
24
24
  return
25
25
  end
26
26
  if !linkinfo[0]["project"] then
27
- $stderr.puts "ERROR: Project element does not exists in linkinfo"
27
+ Utils.log_error "ERROR: Project element does not exists in linkinfo"
28
28
  return
29
29
  end
30
30
  if !linkinfo[0]["package"] then
31
- $stderr.puts "ERROR: Package element does not exists in linkinfo"
31
+ Utils.log_error "ERROR: Package element does not exists in linkinfo"
32
32
  return
33
33
  end
34
34
  repo = linkinfo[0]["project"]
35
35
  package = linkinfo[0]["package"]
36
36
  if linkinfo[0]["rev"] then
37
37
  rev = linkinfo[0]["rev"]
38
- $stderr.puts "DEBUG: Revision in link: #{rev}."
38
+ Utils.log_error "DEBUG: Revision in link: #{rev}."
39
39
  package = package + "?rev=" + rev
40
40
  end
41
- $stderr.puts "DEBUG: follow link to project: #{repo} package: #{package}"
41
+ Utils.log_error "DEBUG: follow link to project: #{repo} package: #{package}"
42
42
  parse_rpm_data(repo, package)
43
43
  end
44
44
 
@@ -47,7 +47,7 @@ class OBSGems < GemsCommand
47
47
  begin
48
48
  data = open(url, :http_basic_authentication => [@username, @password]).read
49
49
  rescue
50
- $stderr.puts "ERROR: There was a problem opening #{url} "
50
+ Utils.log_error "ERROR: There was a problem opening #{url} "
51
51
  end
52
52
  return data
53
53
  end
@@ -61,15 +61,21 @@ class OBSGems < GemsCommand
61
61
  end
62
62
  data = XmlSimple.xml_in(response)
63
63
  if data["linkinfo"] then
64
- $stderr.puts "DEBUG: #{data["name"]} is a link."
64
+ Utils.log_error "DEBUG: #{data["name"]} is a link."
65
+ if data["entry"].length != 1
66
+ Utils.log_error "ERROR: when parsing the link for #{project} : #{package}. There are more entries than expected. That may be a patched link and the result may not be correct"
67
+ end
65
68
  parse_link(data["linkinfo"])
66
69
  return
67
70
  end
68
71
  if !data["entry"] then
69
- $stderr.puts "ERROR: something went wrong retrieving info from #{project} : #{package}"
72
+ Utils.log_error "ERROR: something went wrong retrieving info from #{project} : #{package}"
70
73
  return
71
74
  end
72
75
  data["entry"].each do |entry|
76
+ if !(entry["name"] =~ /\w\.(gem|spec|changes|rpmlintrc)/)
77
+ Utils.log_error "ERROR: when parsing data for #{project} : #{package}. Entry not expected. That may be a patched rpm and the result may not be correct. #{entry["name"]}"
78
+ end
73
79
  if entry["name"].end_with?(".gem") then
74
80
  name = gem_name(entry['name'])
75
81
  version = Gem::Version.new(gem_version(entry['name']))
@@ -26,7 +26,7 @@ class RubyGemsGems < GemsCommand
26
26
  gz = Zlib::GzipReader.new(source)
27
27
  return gz.read
28
28
  rescue
29
- $stderr.puts "ERROR: There was a problem opening #{specs_url} "
29
+ Utils.log_error "ERROR: There was a problem opening #{specs_url} "
30
30
  end
31
31
  return ""
32
32
  end
@@ -11,13 +11,13 @@ class RubyGemsGems_GemSimple < GemSimple
11
11
  return @md5
12
12
  end
13
13
  gem_uri = "#{@gems_url}/#{@name}-#{@version}.gem"
14
- $stderr.puts "DEBUG: download and md5 for #{@name} from #{gem_uri}"
14
+ Utils.log_error "DEBUG: download and md5 for #{@name} from #{gem_uri}"
15
15
  begin
16
16
  source = open(gem_uri)
17
17
  @md5 = Digest::MD5.hexdigest(source.read)
18
18
  return @md5
19
19
  rescue
20
- $stderr.puts "ERROR: There was a problem opening #{gem_uri}"
20
+ Utils.log_error "ERROR: There was a problem opening #{gem_uri}"
21
21
  end
22
22
  return nil
23
23
  end
data/lib/utils.rb CHANGED
@@ -1,4 +1,11 @@
1
1
  class Utils
2
+ attr_accessor :errors
3
+ @@errors = []
4
+
5
+ def Utils.errors
6
+ return @@errors
7
+ end
8
+
2
9
  def Utils.check_parameters(classname, conf, parameters)
3
10
  if !conf['classname'] then
4
11
  raise "ERROR: trying to initialize #{classname} when parameter classname does not exists"
@@ -12,4 +19,10 @@ class Utils
12
19
  end
13
20
  end
14
21
  end
22
+
23
+ def Utils.log_error(msg)
24
+ @@errors << msg
25
+ $stderr.puts msg
26
+ end
27
+
15
28
  end
data/lib/view_results.rb CHANGED
@@ -1,5 +1,6 @@
1
1
  require 'rubygems'
2
2
  require 'gems_status_metadata'
3
+ require 'utils'
3
4
 
4
5
  class ViewResults
5
6
 
@@ -32,16 +33,18 @@ class ViewResults
32
33
  <ol>
33
34
  <li> Maintain those gems that have been patched but are not outdated
34
35
  </li>
35
- <li> Update does gems that have been patched and are outdated
36
+ <li> Update those gems that have been patched and are outdated
36
37
  </li>
37
- <li> Update does gems that are outdated
38
+ <li> Update those gems that are outdated
38
39
  </li>
39
40
  </ol>
40
41
  <p>
41
42
  After the comparison there are some checks that have been performed. Those checks imply also there is some kind of work to do
42
43
  </p>
44
+ <p> At the end there are the errors. Look them carefully.
45
+ </p>
43
46
  <p>
44
- You should run gems-status periodically until the lists of patched, outdated and checks are gone.
47
+ You should run gems-status periodically until the lists of errors, patched, outdated and checks are gone.
45
48
  </p>
46
49
  "
47
50
  end
@@ -88,7 +91,7 @@ class ViewResults
88
91
  version = result[k].version
89
92
  md5 = result[k].md5
90
93
  end
91
- puts "<tr><td><span class='#{name_color}'>#{k}</span></td></tr>"
94
+ puts "<tr><td width='50%'><span class='#{name_color}'>#{k}</span></td><td width='10%'>version</td><td width='40%'>md5</td></tr>"
92
95
  puts html_string
93
96
  puts "</table>"
94
97
  puts "</p>"
@@ -111,6 +114,11 @@ class ViewResults
111
114
  font-size: 110%;
112
115
  font-weight: bold;
113
116
  }
117
+ h2
118
+ {
119
+ font-size: 100%;
120
+ font-weight: bold;
121
+ }
114
122
  .gem_name
115
123
  {
116
124
  color: #000000;
@@ -153,6 +161,8 @@ class ViewResults
153
161
  end
154
162
 
155
163
  def ViewResults.print_tail
164
+ puts "<h2>errors:</h2>"
165
+ Utils.errors.each {|e| puts "<br/><span class='alert'>#{e}</span>"}
156
166
  date = Time.now.strftime('%F0')
157
167
  puts "<p class='footer'>run by <a href=\"https://github.com/jordimassaguerpla/gems-status\">gems-status</a> - #{date} - version: #{GemsStatusMetadata::VERSION}</p>
158
168
  </body>
data/test/Gemfile CHANGED
@@ -1,9 +1,10 @@
1
1
  source 'http://rubygems.org'
2
2
 
3
3
  gem 'system_timer'
4
- gem 'abingo'
4
+ #gem 'abingo'
5
5
  gem 'factory_girl_rails'
6
6
  gem 'curb'
7
7
  gem 'xml-simple'
8
8
  gem 'fakefs'
9
+ gem 'gem2rpm'
9
10
 
data/test/Gemfile.lock CHANGED
@@ -1,15 +1,70 @@
1
1
  GEM
2
2
  remote: http://rubygems.org/
3
3
  specs:
4
- gem 'fakefs'
5
- system_timer (1.2.4)
6
- abingo (1.0.3)
7
- factory_girl_rails (1.2.0)
8
- curb (0.7.15)
9
- xml-simple (1.0.12)
4
+ actionpack (3.2.1)
5
+ activemodel (= 3.2.1)
6
+ activesupport (= 3.2.1)
7
+ builder (~> 3.0.0)
8
+ erubis (~> 2.7.0)
9
+ journey (~> 1.0.1)
10
+ rack (~> 1.4.0)
11
+ rack-cache (~> 1.1)
12
+ rack-test (~> 0.6.1)
13
+ sprockets (~> 2.1.2)
14
+ activemodel (3.2.1)
15
+ activesupport (= 3.2.1)
16
+ builder (~> 3.0.0)
17
+ activesupport (3.2.1)
18
+ i18n (~> 0.6)
19
+ multi_json (~> 1.0)
20
+ builder (3.0.0)
21
+ curb (0.8.0)
22
+ erubis (2.7.0)
23
+ factory_girl (2.5.1)
24
+ activesupport
25
+ factory_girl_rails (1.6.0)
26
+ factory_girl (~> 2.5.0)
27
+ railties (>= 3.0.0)
10
28
  fakefs (0.4.0)
29
+ gem2rpm (0.7.1)
30
+ hike (1.2.1)
31
+ i18n (0.6.0)
32
+ journey (1.0.1)
33
+ json (1.6.5)
34
+ multi_json (1.0.4)
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)
11
60
 
12
61
  PLATFORMS
13
62
  ruby
14
63
 
15
64
  DEPENDENCIES
65
+ curb
66
+ factory_girl_rails
67
+ fakefs
68
+ gem2rpm
69
+ system_timer
70
+ xml-simple
@@ -2,8 +2,12 @@ GEM
2
2
  remote: http://rubygems.org/
3
3
  specs:
4
4
  test (0.8.6)
5
+ test2 (1.2.3)
6
+ test2 (1.2.3)
5
7
 
6
8
  PLATFORMS
7
9
  ruby
8
10
 
9
11
  DEPENDENCIES
12
+ test
13
+
@@ -16,10 +16,15 @@ class TestLockfileGems < Test::Unit::TestCase
16
16
  def test_get_rubygems_data
17
17
  lockfilegems = LockfileGemsTest.new
18
18
  lockfilegems.execute
19
+ assert(lockfilegems.result.length == 2)
19
20
  result = lockfilegems.result["test"].name
20
21
  assert_equal("test",result)
21
22
  result = lockfilegems.result["test"].version
22
23
  assert_equal(Gem::Version.new("0.8.6"), result)
24
+ result = lockfilegems.result["test2"].name
25
+ assert_equal("test2",result)
26
+ result = lockfilegems.result["test2"].version
27
+ assert_equal(Gem::Version.new("1.2.3"), result)
23
28
  end
24
29
  end
25
30
 
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gems-status
3
3
  version: !ruby/object:Gem::Version
4
- hash: 21
4
+ hash: 19
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 2
9
- - 1
10
- version: 0.2.1
9
+ - 2
10
+ version: 0.2.2
11
11
  platform: ruby
12
12
  authors:
13
13
  - Jordi Massaguer Pla
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2012-02-03 00:00:00 Z
18
+ date: 2012-02-05 00:00:00 Z
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
21
21
  name: xml-simple