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