class AwsAsCode::Task::Compile
Compiles all input templates and puts JSON to the output directory
Attributes
config[R]
Public Class Methods
new(config)
click to toggle source
# File lib/aws_as_code/task/compile.rb, line 14 def initialize(config) @config = config end
Public Instance Methods
execute()
click to toggle source
# File lib/aws_as_code/task/compile.rb, line 18 def execute input_files.each { |filename| compile_single_file filename } end
Private Instance Methods
compile_single_file(filename)
click to toggle source
# File lib/aws_as_code/task/compile.rb, line 66 def compile_single_file(filename) def_params def_settings def_template_url cfn = binding.eval(File.read(filename), filename) save_output cfn, filename end
def_params()
click to toggle source
# File lib/aws_as_code/task/compile.rb, line 30 def def_params pairs = load_params CfnDsl::JSONable.send :define_method, :params do |env = nil| pairs.reject do |pair| data = pair.last services = data["_ext"]["services"] !env.nil? && !services.nil? && !services.include?(env) end.to_h end end
def_settings()
click to toggle source
# File lib/aws_as_code/task/compile.rb, line 58 def def_settings data = load_settings c = config CfnDsl::JSONable.send :define_method, :setting do |name| data[name][c.stack] || data[name]["_default"] end end
def_template_url()
click to toggle source
# File lib/aws_as_code/task/compile.rb, line 45 def def_template_url c = config CfnDsl::JSONable.send :define_method, :template_url do |name| prefix = "#{c.stack}/#{c.version}" "https://s3.amazonaws.com/#{c.bucket}/#{prefix}/#{name}.json" end end
input_files()
click to toggle source
# File lib/aws_as_code/task/compile.rb, line 93 def input_files Dir.glob(File.join(config.ruby_dir, "**/*.rb")) end
load_params()
click to toggle source
# File lib/aws_as_code/task/compile.rb, line 24 def load_params param_filename = File.join config.config_dir, "parameters.yml" return [] unless File.exist? param_filename YAML.load_file(param_filename).to_a end
load_settings()
click to toggle source
# File lib/aws_as_code/task/compile.rb, line 53 def load_settings filename = File.join config.config_dir, "settings.yml" YAML.load_file(filename) end
output_pathname(filename)
click to toggle source
# File lib/aws_as_code/task/compile.rb, line 85 def output_pathname(filename) Pathname .new(filename) .relative_path_from(Pathname.new(config.ruby_dir)) .sub_ext(".json") .to_s end
save_output(cfn, filename)
click to toggle source
# File lib/aws_as_code/task/compile.rb, line 75 def save_output(cfn, filename) dest = File.join config.json_dir, output_pathname(filename) dirname = File.dirname(dest) FileUtils.mkdir_p(dirname) unless File.directory?(dirname) File.open(dest, "w") { |f| f.write cfn.to_json } end