Class: Bolt::ModuleInstaller::Specs::ForgeSpec

Inherits:
Object
  • Object
show all
Defined in:
lib/bolt/module_installer/specs/forge_spec.rb

Constant Summary collapse

NAME_REGEX =
%r{\A[a-zA-Z0-9]+[-/](?<name>[a-z][a-z0-9_]*)\z}.freeze
REQUIRED_KEYS =
Set.new(%w[name]).freeze
KNOWN_KEYS =
Set.new(%w[name version_requirement]).freeze

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(init_hash) ⇒ ForgeSpec

Returns a new instance of ForgeSpec.



20
21
22
23
24
# File 'lib/bolt/module_installer/specs/forge_spec.rb', line 20

def initialize(init_hash)
  @full_name, @name                       = parse_name(init_hash['name'])
  @version_requirement, @semantic_version = parse_version_requirement(init_hash['version_requirement'])
  @type                                   = :forge
end

Instance Attribute Details

#full_nameObject (readonly)

Returns the value of attribute full_name.



18
19
20
# File 'lib/bolt/module_installer/specs/forge_spec.rb', line 18

def full_name
  @full_name
end

#nameObject (readonly)

Returns the value of attribute name.



18
19
20
# File 'lib/bolt/module_installer/specs/forge_spec.rb', line 18

def name
  @name
end

#semantic_versionObject (readonly)

Returns the value of attribute semantic_version.



18
19
20
# File 'lib/bolt/module_installer/specs/forge_spec.rb', line 18

def semantic_version
  @semantic_version
end

#typeObject (readonly)

Returns the value of attribute type.



18
19
20
# File 'lib/bolt/module_installer/specs/forge_spec.rb', line 18

def type
  @type
end

Class Method Details

.implements?(hash) ⇒ Boolean

Returns:

  • (Boolean)


26
27
28
# File 'lib/bolt/module_installer/specs/forge_spec.rb', line 26

def self.implements?(hash)
  KNOWN_KEYS.superset?(hash.keys.to_set) && REQUIRED_KEYS.subset?(hash.keys.to_set)
end

Instance Method Details

#satisfied_by?(mod) ⇒ Boolean

Returns true if the specification is satisfied by the module.

Returns:

  • (Boolean)


56
57
58
59
60
61
# File 'lib/bolt/module_installer/specs/forge_spec.rb', line 56

def satisfied_by?(mod)
  @type == mod.type &&
    @full_name.downcase == mod.full_name.downcase &&
    !mod.version.nil? &&
    @semantic_version.cover?(mod.version)
end

#to_hashObject

Returns a hash matching the module spec in bolt-project.yaml



65
66
67
68
69
70
# File 'lib/bolt/module_installer/specs/forge_spec.rb', line 65

def to_hash
  {
    'name'                => @full_name,
    'version_requirement' => @version_requirement
  }.compact
end

#to_resolver_moduleObject

Creates a PuppetfileResolver::Puppetfile::ForgeModule object, which is used to generate a graph of resolved modules.



75
76
77
78
79
80
81
# File 'lib/bolt/module_installer/specs/forge_spec.rb', line 75

def to_resolver_module
  require 'puppetfile-resolver'

  PuppetfileResolver::Puppetfile::ForgeModule.new(@full_name).tap do |mod|
    mod.version = @version_requirement
  end
end