Sha256: 4cfccad169283b24a6bb360459370c72789eada65570822826974cc90e99c19a

Contents?: true

Size: 1.24 KB

Versions: 24

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.parse File.read(fname)
      else
        raise "Unrecognized extension #{format}"
      end
      params.each { |key, val| set_param(key, val) }
    end
  end
end

Version data entries

24 entries across 24 versions & 1 rubygems

Version Path
cfndsl-0.14.0 lib/cfndsl/external_parameters.rb
cfndsl-0.13.1 lib/cfndsl/external_parameters.rb
cfndsl-0.13.0 lib/cfndsl/external_parameters.rb
cfndsl-0.12.11 lib/cfndsl/external_parameters.rb
cfndsl-0.12.10 lib/cfndsl/external_parameters.rb
cfndsl-0.12.9 lib/cfndsl/external_parameters.rb
cfndsl-0.12.8 lib/cfndsl/external_parameters.rb
cfndsl-0.12.7 lib/cfndsl/external_parameters.rb
cfndsl-0.12.6 lib/cfndsl/external_parameters.rb
cfndsl-0.12.5 lib/cfndsl/external_parameters.rb
cfndsl-0.12.4 lib/cfndsl/external_parameters.rb
cfndsl-0.12.3 lib/cfndsl/external_parameters.rb
cfndsl-0.12.2 lib/cfndsl/external_parameters.rb
cfndsl-0.12.1 lib/cfndsl/external_parameters.rb
cfndsl-0.12.0 lib/cfndsl/external_parameters.rb
cfndsl-0.11.12 lib/cfndsl/external_parameters.rb
cfndsl-0.11.11 lib/cfndsl/external_parameters.rb
cfndsl-0.11.10 lib/cfndsl/external_parameters.rb
cfndsl-0.11.9 lib/cfndsl/external_parameters.rb
cfndsl-0.11.8 lib/cfndsl/external_parameters.rb