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