class Wire::ValidateCommand

Validate Command reads yaml, parses model elements and runs a number of consistency checks

Attributes

errors[RW]

array of errors

validations[RW]

array of validations

Public Class Methods

new() click to toggle source

initializes an empty error list

# File lib/wire/commands/validate_command.rb, line 19
def initialize
  @errors = []
  @validations = [NetworksValidation, AppGroupValidation]
end

Public Instance Methods

run_on_project() click to toggle source

runs validation on given project returns

> list of errors

# File lib/wire/commands/validate_command.rb, line 27
def run_on_project
  @errors = []

  # run validations against it
  # TODO: Move validation classes to class level definition
  @validations.each do |val_clazz|
    (@errors << run_validation(@project, val_clazz)).flatten!
  end

  if @errors.size == 0
    outputs 'VALIDATE', 'OK, model is consistent.', :ok
  else
    outputs 'VALIDATE', 'ERROR, detected inconsistencies:', :error
    @errors.each do |val_error|
      outputs 'VALIDATE', val_error.to_s, :error
    end
  end

  @errors
end
run_validation(project, validation_class) click to toggle source

run a validation of given validation_class against the model

params:

project

project model object, to validate

validation_class

class object of validation, i.e. NetworksValidation

returns: list of errors from validation object

# File lib/wire/commands/validate_command.rb, line 57
def run_validation(project, validation_class)
  $log.debug "Running validation class #{validation_class}"
  val_object = validation_class.new(project)
  val_object.run_validations
  val_object.errors
end