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