module Gem2Rpm

Constants

VERSION

Public Class Methods

convert(fname, template, out = $stdout, nongem = true, local = false, doc_subpackage = true) click to toggle source
# File lib/gem2rpm.rb, line 44
def self.convert(fname, template, out = $stdout, nongem = true, local = false,
                    doc_subpackage = true)
  package = Gem2Rpm::Package.new(fname)
  # Deprecate, kept just for backward compatibility.
  format = Gem2Rpm::Format.new(package)
  spec = Gem2Rpm::Specification.new(package.spec)
  config = Gem2Rpm::Configuration.instance.reset
  download_path = ""
  unless local
    begin
      download_path = find_download_url(spec.name, spec.version)
    rescue DownloadUrlError => e
      $stderr.puts "Warning: Could not retrieve full URL for #{spec.name}\nWarning: Edit the specfile and enter the full download URL as 'Source0' manually"
      $stderr.puts e.inspect
    end
  end

  erb = ERB.new(template.read, 0, '-')
  out.puts erb.result(binding)
rescue Gem::Exception => e
  puts e
end
find_download_url(name, version) click to toggle source
# File lib/gem2rpm.rb, line 26
def self.find_download_url(name, version)
  dep = Gem::Dependency.new(name, "=#{version}")
  fetcher = Gem2Rpm::SpecFetcher.new(Gem::SpecFetcher.fetcher)

  spec_and_source, errors = fetcher.spec_for_dependency(dep, false)

  fail DownloadUrlError, errors.first.error.message unless errors.empty?

  _spec, source = spec_and_source.first

  if source && source.uri
    download_path = source.uri.to_s
    download_path += "gems/"
  end

  download_path
end
packager() click to toggle source

Returns the email address of the packager (i.e., the person running gem2spec). Taken from RPM macros if present, constructed from system username and hostname otherwise.

# File lib/gem2rpm.rb, line 79
def self.packager
  packager = %x`rpmdev-packager 2> /dev/null`.chomp rescue ''

  if packager.empty?
    packager = %x`rpm --eval '%{packager}' 2> /dev/null`.chomp rescue ''
  end

  if packager.empty? || (packager == '%{packager}')
    passwd_entry = Etc.getpwnam(Etc.getlogin)
    packager = "#{(passwd_entry && passwd_entry.gecos) || Etc.getlogin} <#{Etc.getlogin}@#{Socket.gethostname}>"
  end

  packager
end
print_dependencies(gemfile, out = $stdout) click to toggle source

Print gem dependencies to the specified output ($stdout by default).

rubygem_template() click to toggle source
# File lib/gem2rpm.rb, line 94
def self.rubygem_template
  Template.new(File.join(Template.default_location, "#{Distro.nature}.spec.erb"))
end
vagrant_plugin_template() click to toggle source
# File lib/gem2rpm.rb, line 98
def self.vagrant_plugin_template
  file = File.join(Template.default_location, "#{Distro.nature}-vagrant-plugin.spec.erb")
  Template.new(file)
end