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