Sha256: aa258b6188e2543b360f7e8e6c5311fe96ffe36242cdac2ca20e09c10d2cfefe

Contents?: true

Size: 935 Bytes

Versions: 12

Compression:

Stored size: 935 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
      @file = "#{Terraspace.root}/config/cli/args.rb"
      @commands = {}
    end

    def build
      return @commands unless File.exist?(@file)
      evaluate_file(@file)
      @commands.deep_stringify_keys!
    end
    memoize :build

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

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

    def env_vars
      build
      dig("env", {})
    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

12 entries across 12 versions & 1 rubygems

Version Path
terraspace-0.3.6 lib/terraspace/terraform/args/custom.rb
terraspace-0.3.5 lib/terraspace/terraform/args/custom.rb
terraspace-0.3.4 lib/terraspace/terraform/args/custom.rb
terraspace-0.3.3 lib/terraspace/terraform/args/custom.rb
terraspace-0.3.2 lib/terraspace/terraform/args/custom.rb
terraspace-0.3.1 lib/terraspace/terraform/args/custom.rb
terraspace-0.3.0 lib/terraspace/terraform/args/custom.rb
terraspace-0.2.4 lib/terraspace/terraform/args/custom.rb
terraspace-0.2.3 lib/terraspace/terraform/args/custom.rb
terraspace-0.2.2 lib/terraspace/terraform/args/custom.rb
terraspace-0.2.1 lib/terraspace/terraform/args/custom.rb
terraspace-0.2.0 lib/terraspace/terraform/args/custom.rb