class Revamp::Filter::PuppetVerToRpmReq

A filter that process Puppet dependency into RPM requirements lines More info: docs.puppetlabs.com/puppet/latest/reference/modules_publishing.html#dependencies-in-metadatajson Even more info: robots.thoughtbot.com/rubys-pessimistic-operator

Constants

PUPPETMODULE
TWIDDLE_WAKKA

Attributes

slug[RW]
slugger[RW]

Public Class Methods

new() click to toggle source
# File lib/revamp/filter/puppetver2rpmreq.rb, line 13
def initialize
  @slugger = Revamp::Mapper::PuppetNameSlugger.new
end

Public Instance Methods

filter(puppetver) click to toggle source

Filters a Puppet version @param [puppetver] Revamp::Model::PuppetDependency a puppet dependency object @return String[] a array of puppet compatibile version specs

# File lib/revamp/filter/puppetver2rpmreq.rb, line 20
def filter(puppetver)
  @slug = slugger.map(puppetver.name)
  reqs = []
  requirements = puppetver.version.requirements
  if singular?(requirements)
    reqs += filter_single(requirements.first)
  else
    reqs += filter_many(requirements)
  end
  reqs
end

Private Instance Methods

digitalize(version) click to toggle source
# File lib/revamp/filter/puppetver2rpmreq.rb, line 87
def digitalize(version)
  Gem::Version.new(version.to_s.tr('x', '0'))
end
filter_many(requirements) click to toggle source
# File lib/revamp/filter/puppetver2rpmreq.rb, line 47
def filter_many(requirements)
  reqs = []
  requirements.each do |tuple|
    reqs += process(tuple)
  end
  reqs
end
filter_semver(version) click to toggle source
# File lib/revamp/filter/puppetver2rpmreq.rb, line 72
def filter_semver(version)
  digital = digitalize(version)
  filter_twiddle_wakka(digital)
end
filter_single(requirement) click to toggle source
# File lib/revamp/filter/puppetver2rpmreq.rb, line 34
def filter_single(requirement)
  reqs = []
  type, version = requirement
  if type == TWIDDLE_WAKKA
    reqs += filter_twiddle_wakka(version)
  elsif semver?(version)
    reqs += filter_semver(version)
  else
    reqs += process(requirement)
  end
  reqs
end
filter_twiddle_wakka(version) click to toggle source
# File lib/revamp/filter/puppetver2rpmreq.rb, line 64
def filter_twiddle_wakka(version)
  upper_cap = make_upper_cap(version)
  reqs = []
  reqs << "#{modulename} >= #{version}"
  reqs << "#{modulename} < #{upper_cap}"
  reqs
end
make_upper_cap(version) click to toggle source
# File lib/revamp/filter/puppetver2rpmreq.rb, line 77
def make_upper_cap(version)
  # take second from back and add increment
  upper_cap_digit = version.segments[-2] + 1
  segments = version.segments.dup
  segments[-2] = upper_cap_digit
  # zero last digit
  segments[-1] = 0
  Gem::Version.new(segments.join('.'))
end
modulename() click to toggle source
# File lib/revamp/filter/puppetver2rpmreq.rb, line 55
def modulename
  "#{PUPPETMODULE}(#{slug})"
end
process(requirement) click to toggle source
# File lib/revamp/filter/puppetver2rpmreq.rb, line 59
def process(requirement)
  type, version = requirement
  ["#{modulename} #{type} #{version}"]
end
semver?(version) click to toggle source
# File lib/revamp/filter/puppetver2rpmreq.rb, line 91
def semver?(version)
  version.to_s.include? 'x'
end
singular?(list) click to toggle source
# File lib/revamp/filter/puppetver2rpmreq.rb, line 95
def singular?(list)
  list.size == 1
end