Sha256: 48e4e6917be55a3cc8913eed850c136efb17ac20975c97dc09efae99ba4f123a

Contents?: true

Size: 1.78 KB

Versions: 3

Compression:

Stored size: 1.78 KB

Contents

class Lono::Builder::Template
  class PostProcessor < Lono::CLI::Base
    def run
      replacements.each do |placeholder, replacement|
        update_template!(template)
      end
      write_template!
    end

    def write_template!
      IO.write(template_path, YAML.dump(template)) # unless ENV['LONO_TEST'] # additional safeguard for testing
    end

    def replacements
      map = {}

      registry_items.each do |item|
        if item.type == "lambda_layer"
          placeholder = "file://app/files/lambda_layer/#{item.name}"
        elsif item.directory? || item.file?
          placeholder = "file://app/files/file/#{item.name}"
        else
          logger.info "WARN: PostProcessor replacements Cannot find file: #{item.output_path}"
          next
        end
        map[placeholder] = item.s3_path
      end

      Lono::Configset::S3File::Registry.items.each do |item|
        placeholder = "file://configset/#{item.configset}/#{item.name}"
        # map[placeholder] = "https://s3.amazonaws.com/#{Lono::S3::Bucket.name}/#{item.s3_path}"
        map[placeholder] = item.replacement_value
      end

      map
    end

    def update_template!(hash)
      hash.each do |k, v|
        if v.is_a?(String)
          if v =~ %r{^file://}
            v.replace(replacements[v]) # replace the placeholder
          end
        elsif v.is_a?(Hash)
          update_template!(v) # recurse
        elsif v.is_a?(Array)
          v.each { |x| update_template!(x) if x.is_a?(Hash) }
        end
      end
      hash
    end

    # Useful for specs
    def registry_items
      Lono::AppFile::Registry.items
    end

    def template
      YAML.load_file(template_path)
    end
    memoize :template

    def template_path
      "#{Lono.root}/output/#{@blueprint.name}/templates/#{@template}.yml"
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
lono-8.0.0.pre.rc3 lib/lono/builder/template/post_processor.rb
lono-8.0.0.pre.rc2 lib/lono/builder/template/post_processor.rb
lono-8.0.0.pre.rc1 lib/lono/builder/template/post_processor.rb