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
- .convert(fname, template = RUBYGEM_TEMPLATE, out = $stdout, nongem = true, local = false, doc_subpackage = true) ⇒ Object
- .find_download_url(name, version) ⇒ Object
-
.packager ⇒ Object
Returns the email address of the packager (i.e., the person running gem2spec).
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
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.) 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 ⇒ Object
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 |