module Crowbar::Validate::Databags
Constants
- VERSION
Public Class Methods
validate(dir)
click to toggle source
# File lib/crowbar/validate/databags.rb, line 8 def self.validate(dir) # add missing slash if needed dir = "#{dir}/" unless dir[-1] == "/" schema_files = Dir["#{dir}*.schema"].reject { |f| File.directory? f } migration_folders = Dir["#{dir}migrate/*/"] rc = [] schema_files.each { |schema| rc.push(validate_schema(schema)) } schema_files.each { |schema| rc.push(validate_json(schema)) } migration_folders.each { |folder| rc.push(validate_migrations(folder)) } return rc.uniq end
validate_json(schema_filename)
click to toggle source
# File lib/crowbar/validate/databags.rb, line 37 def self.validate_json(schema_filename) config_filename = schema_filename.sub(".schema", ".json") validator = CrowbarValidator.new(schema_filename) parser = Kwalify::Yaml::Parser.new(validator) parser.parse_file(config_filename) if parser.errors && !parser.errors.empty? parser.errors.each do |e| puts "#{config_filename}: #{e.linenum}:#{e.column} [#{e.path}] #{e.message}" end return -2 end return 0 end
validate_migrations(folder)
click to toggle source
# File lib/crowbar/validate/databags.rb, line 52 def self.validate_migrations(folder) folder = "#{folder}/" unless folder[-1] == "/" files = Dir["#{folder}*.rb"] migration_numbers = files.map { |f| File.basename(f)[0, 3] } duplicated = migration_numbers.select { |m| migration_numbers.count(m) > 1 }.uniq unless duplicated.empty? puts "Found duplicated number migration(s) on #{folder} with number(s) #{duplicated}" return -3 end return 0 end
validate_schema(schema_filename)
click to toggle source
# File lib/crowbar/validate/databags.rb, line 23 def self.validate_schema(schema_filename) metavalidator = Kwalify::MetaValidator.instance parser = Kwalify::Yaml::Parser.new(metavalidator) parser.parse_file(schema_filename) if parser.errors && !parser.errors.empty? parser.errors.each do |e| puts "#{schema_filename}: #{e.linenum}:#{e.column} [#{e.path}] #{e.message}" end return -1 end return 0 end