summaryrefslogtreecommitdiff
path: root/lib/gauntlet_rubygems.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/gauntlet_rubygems.rb')
-rw-r--r--lib/gauntlet_rubygems.rb50
1 files changed, 50 insertions, 0 deletions
diff --git a/lib/gauntlet_rubygems.rb b/lib/gauntlet_rubygems.rb
new file mode 100644
index 0000000000..f6c4827129
--- /dev/null
+++ b/lib/gauntlet_rubygems.rb
@@ -0,0 +1,50 @@
+require 'rubygems'
+require 'gauntlet'
+
+##
+# GemGauntlet validates all current gems. Currently these packages are
+# borked:
+#
+# Asami-0.04 : No such file or directory - bin/Asami.rb
+# ObjectGraph-1.0.1 : No such file or directory - bin/objectgraph
+# evil-ruby-0.1.0 : authors must be Array of Strings
+# fresh_cookies-1.0.0 : authors must be Array of Strings
+# plugems_deploy-0.2.0 : authors must be Array of Strings
+# pmsrb-0.2.0 : authors must be Array of Strings
+# pqa-1.6 : authors must be Array of Strings
+# rant-0.5.7 : authors must be Array of Strings
+# rvsh-0.4.5 : No such file or directory - bin/rvsh
+# xen-0.1.2.1 : authors must be Array of Strings
+
+class GemGauntlet < Gauntlet
+ def run(name)
+ warn name
+
+ spec = begin
+ Gem::Specification.load 'gemspec'
+ rescue SyntaxError
+ Gem::Specification.from_yaml File.read('gemspec')
+ end
+ spec.validate
+
+ self.data[name] = false
+ self.dirty = true
+ rescue SystemCallError, Gem::InvalidSpecificationException => e
+ self.data[name] = e.message
+ self.dirty = true
+ end
+
+ def should_skip?(name)
+ self.data[name] == false
+ end
+
+ def report
+ self.data.sort.reject { |k,v| !v }.each do |k,v|
+ puts "%-21s: %s" % [k, v]
+ end
+ end
+end
+
+gauntlet = GemGauntlet.new
+gauntlet.run_the_gauntlet ARGV.shift
+gauntlet.report