Class: Kitsune::Kit::Configuration::Loader

Inherits:
Object
  • Object
show all
Defined in:
lib/kitsune/kit/configuration.rb

Instance Method Summary collapse

Constructor Details

#initialize(root: Dir.pwd, env: ENV, config_path: nil) ⇒ Loader

Returns a new instance of Loader.



195
196
197
198
199
# File 'lib/kitsune/kit/configuration.rb', line 195

def initialize(root: Dir.pwd, env: ENV, config_path: nil)
  @root = Pathname(root).expand_path
  @env = env
  @config_path = config_path ? Pathname(config_path).expand_path : @root.join(".kitsune/config.yml")
end

Instance Method Details

#load(environment: nil, overrides: {}) ⇒ Object



201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
# File 'lib/kitsune/kit/configuration.rb', line 201

def load(environment: nil, overrides: {})
  selected_environment = (environment || @env["KITSUNE_ENV"] || selected_environment_from_file ||
                          "development").to_s
  unless selected_environment.match?(/\A[a-z0-9][a-z0-9_-]*\z/)
    raise Errors::ConfigurationError, "environment name has an invalid format"
  end

  project = load_yaml(@config_path, required: true)
  environment_config = load_yaml(@root.join(".kitsune/environments/#{selected_environment}.yml"),
                                 required: false)
  combined = deep_merge(DEFAULTS, project)
  combined = deep_merge(combined, environment_config)
  combined = apply_environment(combined)
  combined = deep_merge(combined, stringify_keys(overrides))
  build(combined, selected_environment)
end