Module: Gem2Rpm

Extended by:
TemplateHelpers
Defined in:
lib/gem2rpm.rb,
lib/gem2rpm/distro.rb,
lib/gem2rpm/format.rb,
lib/gem2rpm/helpers.rb,
lib/gem2rpm/package.rb,
lib/gem2rpm/template.rb,
lib/gem2rpm/dependency.rb,
lib/gem2rpm/spec_fetcher.rb,
lib/gem2rpm/configuration.rb,
lib/gem2rpm/specification.rb,
lib/gem2rpm/template_helpers.rb

Defined Under Namespace

Modules: Helpers, TemplateHelpers Classes: Configuration, Dependency, Distro, DownloadUrlError, Exception, Format, Package, SpecFetcher, Specification, Template

Constant Summary collapse

VERSION =
"0.11.0"
OPEN_MODE =

:nodoc:

if Object.const_defined? :Encoding
  'r:UTF-8'
else
  'r'
end
RUBYGEM_TEMPLATE =
Template.new(File.join(Template::default_location, "#{Distro.nature.to_s}.spec.erb"))
VAGRANT_PLUGIN_TEMPLATE =
begin
  file = File.join(Template::default_location, "#{Distro.nature.to_s}-vagrant-plugin.spec.erb")
  Template.new(file) if File.exist? file
end

Class Method Summary collapse

Methods included from TemplateHelpers

doc_file_entries, main_file_entries, requirement

Class Method Details

.convert(fname, template = RUBYGEM_TEMPLATE, out = $stdout, nongem = true, local = false, doc_subpackage = true) ⇒ Object



44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
# File 'lib/gem2rpm.rb', line 44

def Gem2Rpm.convert(fname, template=RUBYGEM_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.to_default
  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) ⇒ Object

Raises:



26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# 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)

  raise DownloadUrlError.new(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

.packagerObject

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.



70
71
72
73
74
75
76
77
78
79
80
81
82
83
# File 'lib/gem2rpm.rb', line 70

def Gem2Rpm.packager()
  packager = `rpmdev-packager 2> /dev/null`.chomp rescue ''

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

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

  packager
end