Sha256: 087895e20f8c6c47fcea656ea30189d04546d190a5c2cbfddf7f0f2d780f8a7d

Contents?: true

Size: 1000 Bytes

Versions: 9

Compression:

Stored size: 1000 Bytes

Contents

require 'yaml'
module EzConfig
  class ConfigLoader
    def initialize(logger)
      @logger = logger
      load_ez_config
      load_project_config
      load_local_overrides
      @api_config = Concurrent::Map.new
      @immutable_config = @ez_config.merge(@project_config)
    end

    def calc_config
      rtn = @immutable_config.clone
      @api_config.each_key do |k|
        rtn[k] = @api_config[k]
      end
      rtn = rtn.merge(@local_overrides)
      rtn
    end

    def set(delta)
      @api_config[delta.key] = delta.value
    end

    private

    def load_ez_config
      @ez_config = load(".ezconfig.yaml")
    end

    def load_project_config
      @project_config = load(".projectconfig.yaml")
    end

    def load_local_overrides
      @local_overrides = load(".ezconfig.overrides.yaml")
    end

    def load(filename)
      if File.exist? filename

        YAML.load_file(filename)
      else
        @logger.info "No file #{filename}"
        {}
      end
    end

  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
prefab-cloud-ruby-0.0.9 lib/prefab/config_loader.rb
prefab-cloud-ruby-0.0.8 lib/prefab/config_loader.rb
prefab-cloud-ruby-0.0.7 lib/prefab/config_loader.rb
prefab-cloud-ruby-0.0.6 lib/prefab/config_loader.rb
prefab-cloud-ruby-0.0.5 lib/prefab/config_loader.rb
prefab-cloud-ruby-0.0.4 lib/prefab/config_loader.rb
prefab-cloud-ruby-0.0.3 lib/prefab/config_loader.rb
prefab-cloud-ruby-0.0.2 lib/prefab/config_loader.rb
prefab-cloud-ruby-0.0.1 lib/prefab/config_loader.rb