class Gem2Rpm::Distro

Constants

DEFAULT
FEDORA
OPENSUSE

Public Class Methods

in_range?(version, range) click to toggle source
# File lib/gem2rpm/distro.rb, line 48
def self.in_range?(version, range)
  return nil unless range

  if range.length == 1
    return true if range.first.to_s == version.to_s
  else # range: [xx, yy]
    if range[0].to_s <= version.to_s
      return true if range[1] == 'rawhide' or version.to_s <= range[1].to_s
    end
  end

  false
end
nature() click to toggle source
# File lib/gem2rpm/distro.rb, line 7
def self.nature
  if !release_files.grep(/fedora/).empty?
    versions = []

    release_files.each do |file|
      /\d+/ =~ File.open(file, "r:UTF-8").readline
      versions << Regexp.last_match.to_s if Regexp.last_match
    end

    versions.uniq!

    if versions.length == 1
      template_by_os_version(FEDORA, versions.first) || FEDORA
    else # no version or more versions (=> don't know what to do)
      FEDORA
    end
  elsif !release_files.grep(/redhat/).empty?
    # Use Fedora's template for RHEL ATM.
    FEDORA
  elsif !release_files.grep(/SuSE/).empty?
    OPENSUSE
  else
    DEFAULT
  end
end
release_files() click to toggle source
# File lib/gem2rpm/distro.rb, line 33
def self.release_files
  @@release_files ||=
    Dir.glob('/etc/*{_version,-release}*').select {|e| File.file? e}
end
template_by_os_version(os, version) click to toggle source
# File lib/gem2rpm/distro.rb, line 38
def self.template_by_os_version(os, version)
  Dir.new(Gem2Rpm::template_dir).each do |file|
    next if file =~ /^\./
    /#{os}-([\w-]+).spec.erb/ =~ file
    return file.gsub('.spec.erb', '') if Regexp.last_match and in_range?(version, Regexp.last_match[1].to_s.split('-'))
  end

  nil
end