Module: Crowbar::Validate::Databags
- Defined in:
- lib/crowbar/validate/databags.rb,
lib/crowbar/validate/databags/version.rb
Constant Summary collapse
- VERSION =
"1.0.0"
Class Method Summary collapse
- .validate(dir) ⇒ Object
- .validate_json(schema_filename) ⇒ Object
- .validate_migrations(folder) ⇒ Object
- .validate_schema(schema_filename) ⇒ Object
Class Method Details
.validate(dir) ⇒ Object
8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
# 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) ⇒ Object
37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
# File 'lib/crowbar/validate/databags.rb', line 37 def self.validate_json(schema_filename) config_filename = schema_filename.sub(".schema", ".json") validator = .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) ⇒ Object
52 53 54 55 56 57 58 59 60 61 62 |
# 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) ⇒ Object
23 24 25 26 27 28 29 30 31 32 33 34 35 |
# File 'lib/crowbar/validate/databags.rb', line 23 def self.validate_schema(schema_filename) = Kwalify::MetaValidator.instance parser = Kwalify::Yaml::Parser.new() 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 |