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