Class: Igniter::Contracts::Assembly::PackManifest

Inherits:
Object
  • Object
show all
Defined in:
lib/igniter/contracts/assembly/pack_manifest.rb

Defined Under Namespace

Classes: NodeContract, PackDependency, RegistryContract

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(name:, node_contracts: [], registry_contracts: [], diagnostics: [], metadata: {}, requires_packs: [], provides_capabilities: [], requires_capabilities: []) ⇒ PackManifest

Returns a new instance of PackManifest.



91
92
93
94
95
96
97
98
99
100
101
102
103
104
# File 'lib/igniter/contracts/assembly/pack_manifest.rb', line 91

def initialize(name:, node_contracts: [], registry_contracts: [], diagnostics: [], metadata: {},
               requires_packs: [], provides_capabilities: [], requires_capabilities: [])
  @name = name.to_sym
  @node_contracts = node_contracts.freeze
  @registry_contracts = (
    registry_contracts +
    diagnostics.map { |key| self.class.diagnostic(key) }
  ).uniq.freeze
  @metadata = .freeze
  @requires_packs = normalize_pack_dependencies(requires_packs)
  @provides_capabilities = normalize_capabilities(provides_capabilities)
  @requires_capabilities = normalize_capabilities(requires_capabilities)
  freeze
end

Instance Attribute Details

#metadataObject (readonly)

Returns the value of attribute metadata.



88
89
90
# File 'lib/igniter/contracts/assembly/pack_manifest.rb', line 88

def 
  @metadata
end

#nameObject (readonly)

Returns the value of attribute name.



88
89
90
# File 'lib/igniter/contracts/assembly/pack_manifest.rb', line 88

def name
  @name
end

#node_contractsObject (readonly)

Returns the value of attribute node_contracts.



88
89
90
# File 'lib/igniter/contracts/assembly/pack_manifest.rb', line 88

def node_contracts
  @node_contracts
end

#provides_capabilitiesObject (readonly)

Returns the value of attribute provides_capabilities.



88
89
90
# File 'lib/igniter/contracts/assembly/pack_manifest.rb', line 88

def provides_capabilities
  @provides_capabilities
end

#registry_contractsObject (readonly)

Returns the value of attribute registry_contracts.



88
89
90
# File 'lib/igniter/contracts/assembly/pack_manifest.rb', line 88

def registry_contracts
  @registry_contracts
end

#requires_capabilitiesObject (readonly)

Returns the value of attribute requires_capabilities.



88
89
90
# File 'lib/igniter/contracts/assembly/pack_manifest.rb', line 88

def requires_capabilities
  @requires_capabilities
end

#requires_packsObject (readonly)

Returns the value of attribute requires_packs.



88
89
90
# File 'lib/igniter/contracts/assembly/pack_manifest.rb', line 88

def requires_packs
  @requires_packs
end

Class Method Details

.diagnostic(key) ⇒ Object



64
65
66
# File 'lib/igniter/contracts/assembly/pack_manifest.rb', line 64

def diagnostic(key)
  registry(:diagnostics_contributors, key)
end

.dsl_keyword(key) ⇒ Object



48
49
50
# File 'lib/igniter/contracts/assembly/pack_manifest.rb', line 48

def dsl_keyword(key)
  registry(:dsl_keywords, key)
end

.effect(key) ⇒ Object



68
69
70
# File 'lib/igniter/contracts/assembly/pack_manifest.rb', line 68

def effect(key)
  registry(:effects, key)
end

.executor(key) ⇒ Object



72
73
74
# File 'lib/igniter/contracts/assembly/pack_manifest.rb', line 72

def executor(key)
  registry(:executors, key)
end

.node(kind, requires_dsl: true, requires_runtime: true) ⇒ Object



36
37
38
39
40
41
42
# File 'lib/igniter/contracts/assembly/pack_manifest.rb', line 36

def node(kind, requires_dsl: true, requires_runtime: true)
  NodeContract.new(
    kind: kind,
    requires_dsl: requires_dsl,
    requires_runtime: requires_runtime
  )
end

.normalizer(key) ⇒ Object



60
61
62
# File 'lib/igniter/contracts/assembly/pack_manifest.rb', line 60

def normalizer(key)
  registry(:normalizers, key)
end

.pack_dependency(pack_or_name, pack: nil) ⇒ Object



76
77
78
79
80
81
82
83
84
85
# File 'lib/igniter/contracts/assembly/pack_manifest.rb', line 76

def pack_dependency(pack_or_name, pack: nil)
  return PackDependency.new(name: pack_or_name, pack: pack) if pack

  if pack_or_name.respond_to?(:manifest)
    manifest = pack_or_name.manifest
    return PackDependency.new(name: manifest.name, pack: pack_or_name)
  end

  PackDependency.new(name: pack_or_name)
end

.registry(registry, key) ⇒ Object



44
45
46
# File 'lib/igniter/contracts/assembly/pack_manifest.rb', line 44

def registry(registry, key)
  RegistryContract.new(registry: registry, key: key)
end

.runtime_handler(key) ⇒ Object



52
53
54
# File 'lib/igniter/contracts/assembly/pack_manifest.rb', line 52

def runtime_handler(key)
  registry(:runtime_handlers, key)
end

.validator(key) ⇒ Object



56
57
58
# File 'lib/igniter/contracts/assembly/pack_manifest.rb', line 56

def validator(key)
  registry(:validators, key)
end

Instance Method Details

#declared_keys_for(registry) ⇒ Object



106
107
108
109
110
# File 'lib/igniter/contracts/assembly/pack_manifest.rb', line 106

def declared_keys_for(registry)
  registry_contracts
    .select { |contract| contract.registry == registry.to_sym }
    .map(&:key)
end

#diagnosticsObject



112
113
114
# File 'lib/igniter/contracts/assembly/pack_manifest.rb', line 112

def diagnostics
  declared_keys_for(:diagnostics_contributors)
end