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 65 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 = Configuration.instance.reset runtime_dependencies = Gem2Rpm::RpmDependencyList.new(spec.runtime_dependencies) development_dependencies = Gem2Rpm::RpmDependencyList.new(spec.development_dependencies) tests = TestSuite.new(spec) files = RpmFileList.new(spec.files) main_files = files.top_level_entries.main_entries doc_files = files.top_level_entries.doc_entries 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 47 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 108 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).
# File lib/gem2rpm.rb, line 100 def self.print_dependencies(gemfile, out = $stdout) dl = RpmDependencyList.new(Gem2Rpm::Package.new(gemfile).spec.dependencies) out.puts dl.virtualize.to_rpm end
rubygem_template()
click to toggle source
# File lib/gem2rpm.rb, line 123 def self.rubygem_template Template.new(File.join(Template.default_location, "#{Distro.nature}.spec.erb")) end
show_message(message, obj = nil, out = $stderr)
click to toggle source
# File lib/gem2rpm.rb, line 29 def self.show_message(message, obj = nil, out = $stderr) out.puts("#{message}\n\n") out.puts obj if obj end
show_templates(out = $stdout)
click to toggle source
# File lib/gem2rpm.rb, line 34 def self.show_templates(out = $stdout) out.puts "Available templates in #{Gem2Rpm::Template.default_location}:\n\n" template_list = Gem2Rpm::Template.list.map do |t| t = t.gsub(/(.*)\.spec.erb/, '\1') t.gsub(/^/, t == Distro.nature ? '* ' : ' ') end.join("\n") out.puts template_list end
show_version(out = $stdout)
click to toggle source
# File lib/gem2rpm.rb, line 43 def self.show_version(out = $stdout) out.puts Gem2Rpm::VERSION end
vagrant_plugin_template()
click to toggle source
# File lib/gem2rpm.rb, line 127 def self.vagrant_plugin_template file = File.join(Template.default_location, "#{Distro.nature}-vagrant-plugin.spec.erb") Template.new(file) end