module DependencyManager::ConfigSchemaMacros

Class-level methods for validation of configurations

Public Class Methods

included(klass) click to toggle source

Hook for binding class-level methods to the child class

@param klass [Class]

Factory to bind to

@return [void]

# File lib/dependency_manager/config_schema_macros.rb, line 12
def self.included(klass)
  klass.extend(ClassMethods)
end

Public Instance Methods

validate(target: configuration) click to toggle source

Runs validation against configuration without throwing errors

@param target: configuration [Hash[Symbol, Any]]

Configuration to validate, defaulting to `configuration`

@return [Dry::Validation::Result]

# File lib/dependency_manager/config_schema_macros.rb, line 22
def validate(target: configuration)
  self.class.validate(**target)
end
validate!(target: configuration) click to toggle source

Immediate return validation that will raise an exception if the contract is not fulfilled

@param target: configuration [Hash[Symbol, Any]]

Configuration to validate, defaulting to `configuration`

@raises [ArgumentError]

Failure

@return [TrueClass]

Success
# File lib/dependency_manager/config_schema_macros.rb, line 37
def validate!(target: configuration)
  validation_result = validate(target: target)

  return true if validation_result.success?

  errors = validation_result
    .errors
    .map { |e| "#{e.path} #{e.text}" }
    .join(', ')

  raise ArgumentError, "Configuration is invalid: #{errors}"
end