class Lono::AppFile::Build

Public Instance Methods

build_all() click to toggle source
# File lib/lono/app_file/build.rb, line 17
def build_all
  clean_output
  validate_files!
  copy_to_output
  build_layers
  compress_output
end
build_layers() click to toggle source
# File lib/lono/app_file/build.rb, line 41
def build_layers
  layer_items = Registry.layers
  layer_items.each do |item|
    LambdaLayer.new(@blueprint, item).build
  end
end
clean_output() click to toggle source
# File lib/lono/app_file/build.rb, line 70
def clean_output
  FileUtils.rm_rf(@output_files_path)
end
compress_output() click to toggle source
# File lib/lono/app_file/build.rb, line 48
def compress_output
  Registry.items.each do |item|
    # type can be lambda_layer or file
    if item.type == "lambda_layer" || item.exist?
      zip(item)
    else
      puts "WARN: #{item.src_path} does not exist. Double check that the path is correct in the s3_key call.".color(:yellow)
    end
  end
end
context() click to toggle source
# File lib/lono/app_file/build.rb, line 65
def context
  Lono::Template::Context.new(@options)
end
copy_to_output() click to toggle source
# File lib/lono/app_file/build.rb, line 59
def copy_to_output
  override_source_paths("#{Lono.blueprint_root}/app/files")
  self.destination_root = @output_files_path
  directory(".", verbose: false, context: context.get_binding) # Thor::Action
end
detect_files?() click to toggle source
# File lib/lono/app_file/build.rb, line 74
def detect_files?
  app_files = Dir["#{Lono.blueprint_root}/app/files/*"]
  if app_files.empty?
    false
  else
    puts "Detected app/files for blueprint #{@blueprint}"
    true
  end
end
initialize_variables() click to toggle source
# File lib/lono/app_file/build.rb, line 7
def initialize_variables
  @output_files_path = "#{Lono.config.output_path}/#{@blueprint}/files"
end
run() click to toggle source
# File lib/lono/app_file/build.rb, line 11
def run
  return unless detect_files?
  puts "Building app/files for blueprint #{@blueprint}"
  build_all
end
validate_files!() click to toggle source
# File lib/lono/app_file/build.rb, line 25
def validate_files!
  items = Registry.items + Registry.layers
  missing = items.select do |item|
    !File.exist?(item.src_path)
  end
  missing_paths = missing.map { |item| item.src_path }.uniq
  unless missing_paths.empty?
    puts "ERROR: These app/files are missing were used by the s3_key method but are missing".color(:red)
    missing_paths.each do |path|
      puts "    #{path}"
    end
    puts "Please double check that they exist."
    exit 1
  end
end