class Kangaru::Config
def [](key)
def [](key) configurators[key.to_sym] end
def errors
def errors configurators.values.flat_map(&:errors) end
def import!(path)
def import!(path) read_external_config(path).each do |key, config| configurators[key]&.merge!(**config) end end
def initialize
def initialize @configurators = set_configurators! end
def read_external_config(path)
def read_external_config(path) return {} unless File.exist?(path) YAML.load_file(path)&.symbolise || {} end
def serialise
def serialise configurators.transform_values(&:serialise) end
def set_configurators!
def set_configurators! Configurators.classes.to_h do |configurator_class| self.class.class_eval { attr_reader configurator_class.key } configurator = configurator_class.new instance_variable_set(:"@#{configurator_class.key}", configurator) [configurator_class.key, configurator] end end
def valid?
def valid? validate errors.empty? end
def validate
def validate configurators.each_value(&:validate) end