Sha256: f0fbc3d465f82a59b9b0e68a1a41e0dd2fb2a06da689620862e520ed1ad69dd4

Contents?: true

Size: 865 Bytes

Versions: 48

Compression:

Stored size: 865 Bytes

Contents

require "hcl_parser"

class Terraspace::Terraform::Runner::Backend
  class Parser
    extend Memoist

    def initialize(mod)
      @mod = mod
    end

    def result
      return {} unless exist?(backend_path)
      if backend_path.include?('.json')
        json_backend
      else
        hcl_backend
      end
    end

    def json_backend
      data = JSON.load(IO.read(backend_path))
      data.dig("terraform", "backend") || {}
    end

    def hcl_backend
      return {} unless File.exist?(backend_path)
      backend_raw = HclParser.load(IO.read(backend_path))
      return {} unless backend_raw
      backend_raw.dig("terraform", "backend") || {}
    end

    def exist?(path)
      path && File.exist?(path)
    end

    def backend_path
      expr = "#{@mod.cache_dir}/backend.tf*"
      Dir.glob(expr).first
    end
    memoize :backend_path
  end
end

Version data entries

48 entries across 48 versions & 1 rubygems

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