def get_metadata
File.open(@paths.first, 'r') do |f|
::Gem::Package.open(f, 'r') do |gem|
spec = gem.metadata
%w(
description
license
summary
version
).each do |field|
self[field.to_sym] = spec.send(field) rescue "unknown"
end
if self[:settings][:package_prefix]
self[:package_prefix] = self[:settings][:package_prefix]
else
self[:package_prefix] = "rubygem"
end
self[:name] = "#{self[:package_prefix]}#{self[:suffix]}-#{spec.name}"
self[:maintainer] = spec.author
self[:url] = spec.homepage
self[:category] = 'Languages/Development/Ruby'
if !spec.extensions.empty?
self[:architecture] = "native"
else
self[:architecture] = "all"
end
descriptions = [ self[:description], self[:summary], "#{spec.name} - no description given" ]
self[:description] = descriptions.detect { |d| !(d.nil? or d.strip.empty?) }
self[:dependencies] = []
spec.runtime_dependencies.map do |dep|
if dep.respond_to?(:requirement)
reqs = dep.requirement.to_s.gsub(/,/, '')
else
reqs = dep.version_requirements
end
reqs.to_s.split(/, */).each do |req|
self[:dependencies] << "#{self[:package_prefix]}#{self[:suffix]}-#{dep.name} #{req}"
end
end
end
end
end