Sha256: d4c3b24dedc52edf77ea6e5def8df0b85a12bfb0a6b113d9ff35f7f142a583a0

Contents?: true

Size: 1.08 KB

Versions: 2

Compression:

Stored size: 1.08 KB

Contents

# frozen_string_literal: true

require_relative '../configuration/var_captor'

module RSpec
  module Terraform
    module Helpers
      class Var
        attr_reader(:overrides, :configuration_provider)

        def initialize(overrides = {}, configuration_provider = nil)
          @overrides = overrides
          @configuration_provider =
            configuration_provider || Configuration.identity_provider
        end

        def execute(&block)
          parameters = with_configuration_provider_parameters(overrides)
          parameters = with_resolved_vars(parameters, &block)

          parameters[:vars][parameters[:name].to_sym]
        end

        private

        def with_configuration_provider_parameters(parameters)
          configuration_provider.resolve(parameters)
        end

        def with_resolved_vars(parameters, &block)
          return parameters unless block_given?

          var_captor = Configuration::VarCaptor.new(parameters[:vars] || {})
          block.call(var_captor)
          parameters.merge(vars: var_captor.to_h)
        end
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
rspec-terraform-0.1.0.pre.30 lib/rspec/terraform/helpers/var.rb
rspec-terraform-0.1.0.pre.29 lib/rspec/terraform/helpers/var.rb