Sha256: 69ee2fe083526fe346006b4067668a98c47af64ae346808f7cd712bd6c1074b7

Contents?: true

Size: 1.28 KB

Versions: 6

Compression:

Stored size: 1.28 KB

Contents

# frozen_string_literal: true

require 'confidante'
require 'ruby_terraform'

require_relative 'base'
require_relative '../merger'

module RSpec
  module Terraform
    module Configuration
      module Providers
        class Confidante < Base
          attr_reader(
            :parameters,
            :scope_selector,
            :overrides_selector,
            :configuration,
            :merger
          )

          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

          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
        end
      end
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
rspec-terraform-0.5.0.pre.9 lib/rspec/terraform/configuration/providers/confidante.rb
rspec-terraform-0.5.0.pre.8 lib/rspec/terraform/configuration/providers/confidante.rb
rspec-terraform-0.5.0.pre.7 lib/rspec/terraform/configuration/providers/confidante.rb
rspec-terraform-0.5.0.pre.6 lib/rspec/terraform/configuration/providers/confidante.rb
rspec-terraform-0.5.0.pre.5 lib/rspec/terraform/configuration/providers/confidante.rb
rspec-terraform-0.5.0.pre.4 lib/rspec/terraform/configuration/providers/confidante.rb