Sha256: a94649eb6497c19a8555a012317f5a115f5100d45b455f4f9a39705d5d1c16f7
Contents?: true
Size: 1.36 KB
Versions: 4
Compression:
Stored size: 1.36 KB
Contents
class CfnFlow::Template attr_reader :from, :prefix, :bucket def initialize(opts={}) unless [:from, :prefix, :bucket].all? {|arg| opts.key?(arg) } raise ArgumentError.new("Must pass :from, :prefix, and :bucket") end @from, @prefix, @bucket = opts[:from], opts[:prefix], opts[:bucket] end def yaml? from.end_with?('.yml') end def json? ! yaml? end # Determine if this file is a CFN template def is_cfn_template? from_data.is_a?(Hash) && from_data.key?('Resources') end # Returns a response object if valid, or raises an # Aws::CloudFormation::Errors::ValidationError with an error message def validate! cfn.validate_template(template_body: to_json) end def key # Replace leading './' in from File.join(prefix, from.sub(/\A\.\//, '')) end def upload! s3_object.put(body: to_json) end def url s3_object.public_url end def from_data # We *could* load JSON as YAML, but that would generate confusing errors # in the case of a JSON syntax error. @from_data ||= yaml? ? YAML.load_file(from) : MultiJson.load(File.read(from)) rescue puts "Error loading #{from}" raise $! end def to_json @to_json ||= MultiJson.dump(from_data, pretty: true) end private def cfn Aws::CloudFormation::Client.new end def s3_object Aws::S3::Object.new(bucket, key) end end
Version data entries
4 entries across 4 versions & 1 rubygems
Version | Path |
---|---|
cfn-flow-0.2.1 | lib/cfn-flow/template.rb |
cfn-flow-0.2.0 | lib/cfn-flow/template.rb |
cfn-flow-0.1.2 | lib/cfn-flow/template.rb |
cfn-flow-0.1.1 | lib/cfn-flow/template.rb |