Module: Gem2Rpm
- Defined in:
- lib/gem2rpm.rb,
lib/gem2rpm/distro.rb,
lib/gem2rpm/format.rb,
lib/gem2rpm/helpers.rb,
lib/gem2rpm/package.rb,
lib/gem2rpm/dependency.rb,
lib/gem2rpm/spec_fetcher.rb,
lib/gem2rpm/specification.rb
Defined Under Namespace
Modules: Helpers
Classes: Dependency, Distro, DownloadUrlError, Exception, Format, Package, SpecFetcher, Specification
Constant Summary
collapse
- VERSION =
"0.10.1"
- TEMPLATE =
File.read File.join(template_dir, "#{Distro.nature.to_s}.spec.erb")
Class Method Summary
collapse
Class Method Details
.convert(fname, template = TEMPLATE, out = $stdout, nongem = true, local = false, doc_subpackage = true) ⇒ Object
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
|
# File 'lib/gem2rpm.rb', line 33
def Gem2Rpm.convert(fname, template=TEMPLATE, out=$stdout,
nongem=true, local=false, doc_subpackage = true)
package = Gem2Rpm::Package.new(fname)
format = Gem2Rpm::Format.new(package)
spec = Gem2Rpm::Specification.new(package.spec)
spec.description ||= spec.summary
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
template = ERB.new(template, 0, '-')
out.puts template.result(binding)
rescue Gem::Exception => e
puts e
end
|
.find_download_url(name, version) ⇒ Object
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
# File 'lib/gem2rpm.rb', line 15
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
|
.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.
58
59
60
61
62
63
64
65
66
67
68
69
70
71
|
# File 'lib/gem2rpm.rb', line 58
def Gem2Rpm.packager()
packager = `rpmdev-packager`.chomp rescue ''
if packager.empty?
packager = `rpm --eval '%{packager}'`.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
|
.template_dir ⇒ Object
73
74
75
|
# File 'lib/gem2rpm.rb', line 73
def Gem2Rpm.template_dir
File.join(File.dirname(__FILE__), '..', 'templates')
end
|