Class: PuppetfileResolver::Models::ModuleSpecification

Inherits:
Object
  • Object
show all
Defined in:
lib/puppetfile-resolver/models/module_specification.rb

Direct Known Subclasses

MissingModuleSpecification

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(options = {}) ⇒ ModuleSpecification

Returns a new instance of ModuleSpecification.



16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# 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

Instance Attribute Details

#nameObject

Returns the value of attribute name.



10
11
12
# File 'lib/puppetfile-resolver/models/module_specification.rb', line 10

def name
  @name
end

#originObject

Same as R10K module :type



13
14
15
# File 'lib/puppetfile-resolver/models/module_specification.rb', line 13

def origin
  @origin
end

#ownerObject

Returns the value of attribute owner.



11
12
13
# File 'lib/puppetfile-resolver/models/module_specification.rb', line 11

def owner
  @owner
end

#resolver_flagsObject

Returns the value of attribute resolver_flags.



14
15
16
# File 'lib/puppetfile-resolver/models/module_specification.rb', line 14

def resolver_flags
  @resolver_flags
end

#versionObject

Returns the value of attribute version.



12
13
14
# File 'lib/puppetfile-resolver/models/module_specification.rb', line 12

def version
  @version
end

Instance Method Details

#dependencies(cache, resolver_ui) ⇒ Object



82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
# 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 = (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) ⇒ Object



69
70
71
72
73
74
75
# 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) ⇒ Object



77
78
79
80
# File 'lib/puppetfile-resolver/models/module_specification.rb', line 77

def (_cache, _resolver_ui)
  # TODO: Later on we could resolve the metadata lazily, but for now, no need
  @metadata
end

#to_json(*args) ⇒ Object



60
61
62
63
64
65
66
67
# 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_sObject



46
47
48
49
50
51
52
53
54
55
56
57
58
# 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