Sha256: 32b377df65c31db319a5e5102161c89fa06183d2d7e68f43a2a9e6885a54cf3e

Contents?: true

Size: 1.64 KB

Versions: 101

Compression:

Stored size: 1.64 KB

Contents

require "hcl_parser"

module Terraspace
  class Seeder
    extend Memoist
    include Terraspace::Util

    def initialize(mod, options={})
      @mod, @options = mod, options
    end

    def seed
      parsed = parse # make @parsed available for rest of processing
      content = Content.new(parsed).build
      write(content)
    end

    def parse
      if exist?("variables.tf")
        load_hcl_variables
      elsif exist?("variables.tf.json")
        JSON.load(read("variables.tf.json"))
      else
        logger.warn "WARN: no variables.tf or variables.tf.json found in: #{@mod.cache_dir}"
        ENV['TS_TEST'] ? raise : exit
      end
    end
    memoize :parse

    def load_hcl_variables
      HclParser.load(read("variables.tf"))
    rescue Racc::ParseError => e
      logger.error "ERROR: Unable to parse the #{Util.pretty_path(@mod.cache_dir)}/variables.tf file".color(:red)
      logger.error "and generate the starter tfvars file. This is probably due to a complex variable type."
      logger.error "#{e.class}: #{e.message}"
      puts
      logger.error "You will have to create the tfvars file manually at: #{Util.pretty_path(dest_path)}"
      exit 1
    end

    def write(content)
      actions.create_file(dest_path, content)
    end

    def dest_path
      Where.new(@mod, @options).dest_path
    end
    memoize :dest_path

    def exist?(file)
      path = "#{@mod.cache_dir}/#{file}"
      File.exist?(path)
    end

    def read(file)
      path = "#{@mod.cache_dir}/#{file}"
      logger.info "Reading: #{Util.pretty_path(path)}"
      IO.read(path)
    end

    def actions
      Actions.new(@options)
    end
    memoize :actions
  end
end

Version data entries

101 entries across 101 versions & 1 rubygems

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