Sha256: 08e820077aacc5d10a0b90005c9e60fb686851907e29bb90a2f199e977db7631

Contents?: true

Size: 1.45 KB

Versions: 8

Compression:

Stored size: 1.45 KB

Contents

# frozen_string_literal: true

module PuppetfileResolver
  module Models
    class ModuleDependency
      attr_accessor :name
      attr_accessor :owner
      attr_accessor :version_requirement

      def initialize(options = {})
        # Munge the name
        # "puppetlabs/stdlib"
        # "puppetlabs-stdlib"
        # "puppetlabs-stdlib-1.0.0  ??"
        # "stdlib"
        @name = options[:name]
        result = @name.split('/', 2)
        if result.count > 1
          @owner = result[0]
          @name = result[1]
        else
          result = @name.split('-')
          if result.count > 1
            @owner = result[0]
            @name = result[1]
          else
            @owner = options[:owner]
          end
        end

        @version_requirement = options[:version_requirement]
      end

      def to_s
        "#{owner}-#{name} #{version_requirement}"
      end

      def satisified_by?(spec)
        # Missing modules are special. They should always satisfy any version range because
        # we don't know what version missing modules are!
        return true if spec.is_a?(MissingModuleSpecification)
        raise "Specification #{spec} does not have a version" if spec.version.nil?
        semantic_requirement.include?(spec.version)
      end

      private

      def semantic_requirement
        require 'semantic_puppet'

        @semantic_requirement ||= ::SemanticPuppet::VersionRange.parse(@version_requirement)
      end
    end
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
puppetfile-resolver-0.6.2 lib/puppetfile-resolver/models/module_dependency.rb
puppetfile-resolver-0.6.1 lib/puppetfile-resolver/models/module_dependency.rb
puppetfile-resolver-0.6.0 lib/puppetfile-resolver/models/module_dependency.rb
puppetfile-resolver-0.5.0 lib/puppetfile-resolver/models/module_dependency.rb
puppetfile-resolver-0.4.0 lib/puppetfile-resolver/models/module_dependency.rb
puppetfile-resolver-0.3.0 lib/puppetfile-resolver/models/module_dependency.rb
puppetfile-resolver-0.2.0 lib/puppetfile-resolver/models/module_dependency.rb
puppetfile-resolver-0.1.0 lib/puppetfile-resolver/models/module_dependency.rb