Sha256: 5a300165d6b2f6cab9bc38bfec486859e58477ca42e85ea7ac1403fb937c16cd

Contents?: true

Size: 1.14 KB

Versions: 2

Compression:

Stored size: 1.14 KB

Contents

# frozen_string_literal: true

module RSpec
  module Terraform
    module Configuration
      class Merger
        def merge(left, right)
          merge_top_level(left, right)
            .merge(merge_accumulating_maps(left, right))
            .merge(merge_accumulating_lists(left, right))
        end

        private

        def merge_top_level(left, right)
          left.merge(right)
        end

        def merge_accumulating_maps(left, right)
          left_vars = left[:vars] || {}
          right_vars = right[:vars] || {}
          vars = left_vars.merge(right_vars)

          merged = {}
          unless left_vars == {} && right_vars == {}
            merged = merged.merge(vars: vars)
          end

          merged
        end

        def merge_accumulating_lists(left, right)
          left_var_files = left[:var_files] || []
          right_var_files = right[:var_files] || []
          var_files = left_var_files + right_var_files

          merged = {}
          unless left_var_files == [] && right_var_files == []
            merged = merged.merge(var_files: var_files)
          end

          merged
        end
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
rspec-terraform-0.1.0.pre.22 lib/rspec/terraform/configuration/merger.rb
rspec-terraform-0.1.0.pre.21 lib/rspec/terraform/configuration/merger.rb