class Spellr::ConfigLoader
Attributes
config_file[R]
:nocov:
Public Class Methods
new(config_file = ::File.join(Spellr.pwd, '.spellr.yml'))
click to toggle source
# File lib/spellr/config_loader.rb, line 14 def initialize(config_file = ::File.join(Spellr.pwd, '.spellr.yml')) @config_file = config_file end
Public Instance Methods
[](value)
click to toggle source
# File lib/spellr/config_loader.rb, line 18 def [](value) load_config unless defined?(@config) @config[value] end
Private Instance Methods
load_config()
click to toggle source
# File lib/spellr/config_loader.rb, line 25 def load_config default_config = load_yaml(::File.join(__dir__, '..', '.spellr.yml')) project_config = load_yaml(config_file) @config = merge_config(default_config, project_config) end
load_yaml(path)
click to toggle source
# File lib/spellr/config_loader.rb, line 32 def load_yaml(path) return {} unless ::File.exist?(path) YAML.safe_load(::File.read(path), symbolize_names: true) end
merge_config(default, project)
click to toggle source
# File lib/spellr/config_loader.rb, line 38 def merge_config(default, project) # rubocop:disable Metrics/MethodLength if project.is_a?(Array) && default.is_a?(Array) default | project elsif project.is_a?(Hash) && default.is_a?(Hash) default.merge(project) { |_k, d, p| merge_config(d, p) } else project end end