6aa4b2f
#!/usr/bin/ruby
6aa4b2f
6aa4b2f
require 'rubygems/package'
6aa4b2f
6aa4b2f
module RubyGemsProv
6aa4b2f
  module Helpers
6aa4b2f
    # If there is some prelease version files, such as rc1 (i.e. non-numeric
6aa4b2f
    # field), prepend this field by tilde instead of dot.
6aa4b2f
    def self.normalize_prerelease(version)
6aa4b2f
      if version.prerelease?
6aa4b2f
        prerelease = version.version.sub /^#{version.release}\./, ''
6aa4b2f
        "#{version.release}-0.1.#{prerelease}"
6aa4b2f
      else
6aa4b2f
        "#{version.release}-1"
6aa4b2f
      end
6aa4b2f
    end
6aa4b2f
  end
6aa4b2f
6aa4b2f
  # Reports all functionality gem provides.
6aa4b2f
  def self.provides
6aa4b2f
    while filename = gets
6aa4b2f
      filename.strip!
6aa4b2f
      begin
6aa4b2f
        specification = Gem::Specification.load filename
6aa4b2f
6aa4b2f
        puts "rubygem(#{specification.name}) = #{Helpers::normalize_prerelease(specification.version)}"
6aa4b2f
      rescue => e
6aa4b2f
        # Ignore all errors.
6aa4b2f
      end
6aa4b2f
    end
6aa4b2f
  end
6aa4b2f
end
6aa4b2f
6aa4b2f
if __FILE__ == $0
6aa4b2f
  RubyGemsProv::provides
6aa4b2f
end