Class: RSpec::Terraform::Configuration::Providers::Confidante

Inherits:
Base
  • Object
show all
Defined in:
lib/rspec/terraform/configuration/providers/confidante.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods inherited from Base

#reset

Constructor Details

#initialize(opts = {}) ⇒ Confidante

Returns a new instance of Confidante.



22
23
24
25
26
27
28
29
# File 'lib/rspec/terraform/configuration/providers/confidante.rb', line 22

def initialize(opts = {})
  super()
  @parameters = opts[:parameters] || []
  @scope_selector = opts[:scope_selector] || ->(o) { o }
  @overrides_selector = opts[:overrides_selector] || ->(o) { o }
  @configuration = ::Confidante.configuration
  @merger = opts[:merger] || Merger.new
end

Instance Attribute Details

#configurationObject (readonly)

Returns the value of attribute configuration.



14
15
16
# File 'lib/rspec/terraform/configuration/providers/confidante.rb', line 14

def configuration
  @configuration
end

#mergerObject (readonly)

Returns the value of attribute merger.



14
15
16
# File 'lib/rspec/terraform/configuration/providers/confidante.rb', line 14

def merger
  @merger
end

#overrides_selectorObject (readonly)

Returns the value of attribute overrides_selector.



14
15
16
# File 'lib/rspec/terraform/configuration/providers/confidante.rb', line 14

def overrides_selector
  @overrides_selector
end

#parametersObject (readonly)

Returns the value of attribute parameters.



14
15
16
# File 'lib/rspec/terraform/configuration/providers/confidante.rb', line 14

def parameters
  @parameters
end

#scope_selectorObject (readonly)

Returns the value of attribute scope_selector.



14
15
16
# File 'lib/rspec/terraform/configuration/providers/confidante.rb', line 14

def scope_selector
  @scope_selector
end

Instance Method Details

#resolve(overrides = {}) ⇒ Object



31
32
33
34
35
36
37
38
39
40
41
# File 'lib/rspec/terraform/configuration/providers/confidante.rb', line 31

def resolve(overrides = {})
  resolved_configuration =
    configuration
      .for_scope(scope_selector.call(overrides))
      .for_overrides(overrides_selector.call(overrides))
  result = parameters.inject({}) do |acc, parameter|
    value = resolved_configuration.send(parameter)
    value.nil? ? acc : acc.merge(parameter => value)
  end
  merger.merge(result, overrides)
end