Sha256: 9da2f86ff8d65ea51b3225f3403091920724c478fe57b17c09d409d14f9ba465
Contents?: true
Size: 1.24 KB
Versions: 8
Compression:
Stored size: 1.24 KB
Contents
module CfnDsl # Handles all external parameters class ExternalParameters extend Forwardable def_delegators :parameters, :fetch, :keys, :values, :each_pair attr_reader :parameters class << self def defaults(params = {}) @defaults ||= {} @defaults.merge! params @defaults end def current @current || refresh! end def refresh! @current = new end end def initialize @parameters = self.class.defaults.clone end def set_param(k, v) parameters[k.to_sym] = v end def get_param(k) parameters[k.to_sym] end alias [] get_param def to_h parameters end def add_to_binding(bind, logstream) parameters.each_pair do |key, val| logstream.puts("Setting local variable #{key} to #{val}") if logstream bind.eval "#{key} = #{val.inspect}" end end def load_file(fname) format = File.extname fname case format when /ya?ml/ params = YAML.load_file fname when /json/ params = JSON.load File.read(fname) else raise "Unrecognized extension #{format}" end params.each { |key, val| set_param(key, val) } end end end
Version data entries
8 entries across 8 versions & 1 rubygems