class PuppetfileResolver::Models::ModuleSpecification

Attributes

name[RW]
origin[RW]
owner[RW]
resolver_flags[RW]
version[RW]

Public Class Methods

new(options = {}) click to toggle source
# File lib/puppetfile-resolver/models/module_specification.rb, line 16
def initialize(options = {})
  require 'semantic_puppet'

  @name = options[:name]
  @owner = options[:owner]
  # Munge the name
  # "puppetlabs/stdlib"
  # "puppetlabs-stdlib"
  # "puppetlabs-stdlib-1.0.0  ??"
  # "stdlib"
  unless @name.nil?
    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]
      end
    end
  end
  @origin = options[:origin]
  @dependencies = nil
  @metadata = options[:metadata]
  @resolver_flags = options[:resolver_flags].nil? ? [] : options[:resolver_flags]
  @version = ::SemanticPuppet::Version.parse(options[:version]) unless options[:version].nil?
end

Public Instance Methods

dependencies(cache, resolver_ui) click to toggle source
# File lib/puppetfile-resolver/models/module_specification.rb, line 82
def dependencies(cache, resolver_ui)
  return @dependencies unless @dependencies.nil?

  return (@dependencies = []) if resolver_flags.include?(PuppetfileResolver::Puppetfile::DISABLE_ALL_DEPENDENCIES_FLAG)

  meta = metadata(cache, resolver_ui)
  @dependencies = []
  unless meta[:dependencies].nil? || meta[:dependencies].empty?
    @dependencies = meta[:dependencies].map do |dep|
      ModuleDependency.new(
        name: dep[:name],
        version_requirement: dep[:version_requirement] || dep[:version_range] || '>= 0.0.0'
      )
    end
  end

  unless resolver_flags.include?(PuppetfileResolver::Puppetfile::DISABLE_PUPPET_DEPENDENCY_FLAG)
    puppet_requirement = nil
    unless meta[:requirements].nil? || meta[:requirements].empty? # rubocop:disable Style/IfUnlessModifier
      puppet_requirement = meta[:requirements].find { |req| req[:name] == 'puppet' && !req[:version_requirement].nil? }
    end
    if puppet_requirement.nil?
      @dependencies << PuppetDependency.new('>= 0')
    else
      @dependencies << PuppetDependency.new(puppet_requirement[:version_requirement])
    end
  end

  @dependencies
end
from_hash!(hash) click to toggle source
# File lib/puppetfile-resolver/models/module_specification.rb, line 69
def from_hash!(hash)
  @name = hash['name']
  @owner = hash['owner']
  @origin = hash['origin']
  @version = ::SemanticPuppet::Version.parse(hash['version']) unless hash['version'].nil?
  self
end
metadata(_cache, _resolver_ui) click to toggle source
# File lib/puppetfile-resolver/models/module_specification.rb, line 77
def metadata(_cache, _resolver_ui)
  # TODO: Later on we could resolve the metadata lazily, but for now, no need
  @metadata
end
to_json(*args) click to toggle source
# File lib/puppetfile-resolver/models/module_specification.rb, line 60
def to_json(*args)
  {
    'name'    => name,
    'owner'   => owner,
    'origin'  => origin,
    'version' => version.to_s
  }.to_json(args)
end
to_s() click to toggle source
# File lib/puppetfile-resolver/models/module_specification.rb, line 46
def to_s
  prefix = case @origin
           when :forge
             'Forge'
           when :git
             'Git'
           when :local
             'Local'
           else
             'Unknown'
           end
  "#{prefix} #{owner}-#{name}-#{version}"
end