Class: Etcher::Resolver

Inherits:
Object
  • Object
show all
Defined in:
lib/etcher/resolver.rb

Overview

Builds and fully resolves a configuration.

Instance Method Summary collapse

Constructor Details

#initialize(registry = Registry.new, logger: LOGGER) ⇒ Resolver

Returns a new instance of Resolver.



13
14
15
16
17
# File 'lib/etcher/resolver.rb', line 13

def initialize registry = Registry.new, logger: LOGGER
  @builder = Builder.new registry
  @logger = logger
  freeze
end

Instance Method Details

#call(**overrides) ⇒ Object



19
20
21
22
23
24
25
26
27
28
29
# File 'lib/etcher/resolver.rb', line 19

def call(**overrides)
  case builder.call(**overrides)
    in Success(attributes) then attributes
    in Failure(step:, constant:, payload: String => payload)
      logger.abort "#{step.capitalize} failure (#{constant}). #{payload}"
    in Failure(step:, constant:, payload: Hash => payload)
      log_and_abort step, constant, payload
    in Failure(String => message) then logger.abort message
    else logger.abort "Unable to parse failure."
  end
end