Sha256: 69edfc95d71e66e96150f7fc47bfae283c731daf1c7cfda582e37c9f39f2b4c6

Contents?: true

Size: 960 Bytes

Versions: 10

Compression:

Stored size: 960 Bytes

Contents

module Librarian
  module Puppet
    class Requirement
      attr_reader :requirement

      def initialize(requirement)
        @requirement = requirement
      end

      # convert Puppet versions to gem supported versions
      # '1.x' to '~>1.0'
      # '>=1.1.0 <2.0.0' to ['>=1.1.0', '<2.0.0']
      # http://docs.puppetlabs.com/puppet/2.7/reference/modules_publishing.html
      def gem_requirement
        if range_requirement?
          [@range_match[1], @range_match[2]]
        elsif pessimistic_requirement?
          "~> #{@pessimistic_match[1]}.0"
        else
          requirement
        end
      end

      def to_s
        gem_requirement.to_s
      end

      private

      def range_requirement?
        @range_match ||= requirement.match(/(>=? ?\d+(?:\.\d+){0,2}) (<=? ?\d+(?:\.\d+){0,2})/)
      end

      def pessimistic_requirement?
        @pessimistic_match ||= requirement.match(/(\d+(?:\.\d+)?)\.x/)
      end
    end
  end
end

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
librarian-puppet-maestrodev-0.9.10.1 lib/librarian/puppet/requirement.rb
librarian-puppet-maestrodev-0.9.9.8 lib/librarian/puppet/requirement.rb
librarian-puppet-maestrodev-0.9.9.7 lib/librarian/puppet/requirement.rb
librarian-puppet-maestrodev-0.9.9.6 lib/librarian/puppet/requirement.rb
librarian-puppet-maestrodev-0.9.9.5 lib/librarian/puppet/requirement.rb
librarian-puppet-maestrodev-0.9.9.4 lib/librarian/puppet/requirement.rb
librarian-puppet-maestrodev-0.9.9.3 lib/librarian/puppet/requirement.rb
librarian-puppet-maestrodev-0.9.9.2 lib/librarian/puppet/requirement.rb
librarian-puppet-maestrodev-0.9.9.1 lib/librarian/puppet/requirement.rb
librarian-puppet-maestrodev-0.9.8.1 lib/librarian/puppet/requirement.rb