class CC::Config::Validation::FileValidator
Attributes
data[R]
errors[R]
path[R]
registry[R]
warnings[R]
Public Class Methods
new(path, registry)
click to toggle source
# File lib/cc/config/validation/file_validator.rb, line 9 def initialize(path, registry) @path = path @registry = registry @errors = [] @warnings = [] validate end
Public Instance Methods
valid?()
click to toggle source
# File lib/cc/config/validation/file_validator.rb, line 19 def valid? errors.none? end
Private Instance Methods
denormalize_subvalidator(validator, prefix)
click to toggle source
# File lib/cc/config/validation/file_validator.rb, line 31 def denormalize_subvalidator(validator, prefix) validator.errors.each do |msg| errors << "#{prefix}: #{msg}" end validator.warnings.each do |msg| warnings << "#{prefix}: #{msg}" end end
engine_exists?(engine)
click to toggle source
# File lib/cc/config/validation/file_validator.rb, line 79 def engine_exists?(engine) !registry.fetch_engine_details(engine).nil? rescue CC::EngineRegistry::EngineDetailsNotFoundError false end
validate()
click to toggle source
# File lib/cc/config/validation/file_validator.rb, line 27 def validate raise NotImplementedError, "use a subclass" end
validate_checks()
click to toggle source
# File lib/cc/config/validation/file_validator.rb, line 85 def validate_checks return unless validate_key_type("checks", Hash) data.fetch("checks", {}).each do |check_name, check_data| validator = CheckValidator.new(check_data) denormalize_subvalidator(validator, "check #{check_name}") end end
validate_engine_existence(engine_name, engine_data)
click to toggle source
# File lib/cc/config/validation/file_validator.rb, line 60 def validate_engine_existence(engine_name, engine_data) if [true, false].include?(engine_data) engine_data = { "enabled" => true, "channel" => Engine::DEFAULT_CHANNEL, } end engine = Engine.new( engine_name, enabled: engine_data.fetch("enabled", true), channel: engine_data["channel"], config: engine_data["config"], ) unless engine_exists?(engine) warnings << "unknown engine or channel <#{engine.name}:#{engine.channel}>" end end
validate_engines(key, legacy: false)
click to toggle source
# File lib/cc/config/validation/file_validator.rb, line 47 def validate_engines(key, legacy: false) return unless validate_key_type(key, Hash) data.fetch(key, {}).each do |engine_name, engine_data| engine_validator = EngineValidator.new(engine_data, legacy: legacy) denormalize_subvalidator(engine_validator, "engine #{engine_name}") if engine_validator.valid? validate_engine_existence(engine_name, engine_data) end end end
validate_exclude_pattern(key, legacy: false)
click to toggle source
# File lib/cc/config/validation/file_validator.rb, line 94 def validate_exclude_pattern(key, legacy: false) types = if legacy [Array, String] else Array end return unless validate_key_type(key, types) Array(data.fetch(key, [])).each do |pattern| unless pattern.is_a?(String) errors << "each exclude pattern should be a string, but '#{pattern.inspect}' is a #{pattern.class.to_s.downcase}" end end end
validate_prepare()
click to toggle source
# File lib/cc/config/validation/file_validator.rb, line 40 def validate_prepare return unless validate_key_type("prepare", Hash) validator = PrepareValidator.new(data.fetch("prepare", {})) denormalize_subvalidator(validator, "prepare section") end