Sha256: 1f4eaa5ce9eb223a227be1307ce8cdde004134407d9695206f86becb492f97b8

Contents?: true

Size: 1016 Bytes

Versions: 48

Compression:

Stored size: 1016 Bytes

Contents

module Terraspace::Terraform::Args
  class Custom
    extend Memoist
    include Dsl
    include DslEvaluator

    attr_accessor :name
    def initialize(mod, name)
      @mod, @name = mod, name
      @commands = {}
    end

    def build
      evaluate_file("#{Terraspace.root}/config/args/terraform.rb")
      evaluate_file("#{@mod.root}/config/args/terraform.rb")
      @commands.deep_stringify_keys!
    end
    memoize :build

    def args
      terraform_args + var_file_args
    end

    def env_vars
      build
      dig("env", {})
    end

  private
    def terraform_args
      build
      args = dig("args")
      args.compact.flatten
    end

    def var_file_args
      build
      var_files = dig("var_files")
      var_files.select! { |f| var_file_exist?(f) }
      var_files.map { |f| "-var-file=#{f}" }
    end

    def var_file_exist?(var_file)
      File.exist?("#{@mod.cache_dir}/#{var_file}")
    end

    def dig(prop, default=[])
      @commands.dig(@name, prop) || default
    end
  end
end

Version data entries

48 entries across 48 versions & 1 rubygems

Version Path
terraspace-2.2.17 lib/terraspace/terraform/args/custom.rb
terraspace-2.2.16 lib/terraspace/terraform/args/custom.rb
terraspace-2.2.15 lib/terraspace/terraform/args/custom.rb
terraspace-2.2.14 lib/terraspace/terraform/args/custom.rb
terraspace-2.2.13 lib/terraspace/terraform/args/custom.rb
terraspace-2.2.12 lib/terraspace/terraform/args/custom.rb
terraspace-2.2.11 lib/terraspace/terraform/args/custom.rb
terraspace-2.2.10 lib/terraspace/terraform/args/custom.rb
terraspace-2.2.9 lib/terraspace/terraform/args/custom.rb
terraspace-2.2.8 lib/terraspace/terraform/args/custom.rb
terraspace-2.2.7 lib/terraspace/terraform/args/custom.rb
terraspace-2.2.6 lib/terraspace/terraform/args/custom.rb
terraspace-2.2.5 lib/terraspace/terraform/args/custom.rb
terraspace-2.2.4 lib/terraspace/terraform/args/custom.rb
terraspace-2.2.3 lib/terraspace/terraform/args/custom.rb
terraspace-2.2.2 lib/terraspace/terraform/args/custom.rb
terraspace-2.2.1 lib/terraspace/terraform/args/custom.rb
terraspace-2.2.0 lib/terraspace/terraform/args/custom.rb
terraspace-2.1.7 lib/terraspace/terraform/args/custom.rb
terraspace-2.1.6 lib/terraspace/terraform/args/custom.rb