Sha256: 29e3f7256a17056941ffad04795fa15e02fe125b8044c7f8f4cde3c1fb21ee0d

Contents?: true

Size: 1.29 KB

Versions: 26

Compression:

Stored size: 1.29 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

26 entries across 26 versions & 1 rubygems

Version Path
rspec-terraform-0.5.0.pre.3 lib/rspec/terraform/configuration/providers/confidante.rb
rspec-terraform-0.5.0.pre.2 lib/rspec/terraform/configuration/providers/confidante.rb
rspec-terraform-0.5.0.pre.1 lib/rspec/terraform/configuration/providers/confidante.rb
rspec-terraform-0.4.0 lib/rspec/terraform/configuration/providers/confidante.rb
rspec-terraform-0.3.0.pre.1 lib/rspec/terraform/configuration/providers/confidante.rb
rspec-terraform-0.2.0 lib/rspec/terraform/configuration/providers/confidante.rb
rspec-terraform-0.1.0.pre.49 lib/rspec/terraform/configuration/providers/confidante.rb
rspec-terraform-0.1.0.pre.48 lib/rspec/terraform/configuration/providers/confidante.rb
rspec-terraform-0.1.0.pre.47 lib/rspec/terraform/configuration/providers/confidante.rb
rspec-terraform-0.1.0.pre.46 lib/rspec/terraform/configuration/providers/confidante.rb
rspec-terraform-0.1.0.pre.45 lib/rspec/terraform/configuration/providers/confidante.rb
rspec-terraform-0.1.0.pre.44 lib/rspec/terraform/configuration/providers/confidante.rb
rspec-terraform-0.1.0.pre.43 lib/rspec/terraform/configuration/providers/confidante.rb
rspec-terraform-0.1.0.pre.42 lib/rspec/terraform/configuration/providers/confidante.rb
rspec-terraform-0.1.0.pre.41 lib/rspec/terraform/configuration/providers/confidante.rb
rspec-terraform-0.1.0.pre.40 lib/rspec/terraform/configuration/providers/confidante.rb
rspec-terraform-0.1.0.pre.39 lib/rspec/terraform/configuration/providers/confidante.rb
rspec-terraform-0.1.0.pre.38 lib/rspec/terraform/configuration/providers/confidante.rb
rspec-terraform-0.1.0.pre.37 lib/rspec/terraform/configuration/providers/confidante.rb
rspec-terraform-0.1.0.pre.36 lib/rspec/terraform/configuration/providers/confidante.rb