class Ufo::DSL::Outputter

Public Class Methods

new(name, erb_result, options={}) click to toggle source
# File lib/ufo/dsl/outputter.rb, line 4
def initialize(name, erb_result, options={})
  @name = name
  @erb_result = erb_result
  @options = options
end

Public Instance Methods

override_image(data) click to toggle source
# File lib/ufo/dsl/outputter.rb, line 24
def override_image(data)
  return data unless @options[:image_override]
  data["containerDefinitions"].each do |container_definition|
    container_definition["image"] = @options[:image_override]
  end
end
validate(json, path) click to toggle source
# File lib/ufo/dsl/outputter.rb, line 31
def validate(json, path)
  begin
    JSON.parse(json)
  rescue JSON::ParserError => e
    puts "#{e.class}: #{e.message}"
    puts "Invalid json.  Output written to #{path} for debugging".color(:red)
    File.open(path, 'w') {|f| f.write(json) }
    exit 1
  end
end
write() click to toggle source
# File lib/ufo/dsl/outputter.rb, line 10
def write
  output_path = "#{Ufo.root}/.ufo/output"
  FileUtils.rm_rf(output_path) if @options[:clean]
  FileUtils.mkdir(output_path) unless File.exist?(output_path)

  path = "#{output_path}/#{@name}.json".sub(/^\.\//,'')
  puts "  #{path}" unless @options[:quiet]
  validate(@erb_result, path)
  data = JSON.parse(@erb_result)
  override_image(data)
  json = JSON.pretty_generate(data)
  File.open(path, 'w') {|f| f.write(json) }
end