Sha256: 37723a6bf5e74a2575ba76bd5fb98a67c213bcdf972aee00363bd8bb2c380612

Contents?: true

Size: 1.57 KB

Versions: 16

Compression:

Stored size: 1.57 KB

Contents

#!/usr/bin/env ruby

require 'json'
require 'optparse'
require 'pathname'
require 'json_schemer'

parser = OptionParser.new('Usage:', 32, '  ')
parser.separator("  #{parser.program_name} [options] <schema> <data>...")
parser.separator("  #{parser.program_name} [options] <schema> -")
parser.separator("  #{parser.program_name} [options] - <data>...")
parser.separator("  #{parser.program_name} -h | --help")
parser.separator("  #{parser.program_name} --version")
parser.separator('')
parser.separator('Options:')
parser.on('-e', '--errors MAX', Integer, 'Maximum number of errors to output', 'Use "0" to validate with no output')
parser.on_tail('-h', '--help', 'Show help')
parser.on_tail('-v', '--version', 'Show version')

options = {}
parser.parse!(:into => options)

if options[:help]
  $stdout.puts(parser)
  exit
end

if options[:version]
  $stdout.puts("#{parser.program_name} #{JSONSchemer::VERSION}")
  exit
end

if ARGV.size == 0
  $stderr.puts("#{parser.program_name}: no schema or data")
  exit(false)
end

if ARGV.size == 1
  $stderr.puts("#{parser.program_name}: no data")
  exit(false)
end

if ARGV.count('-') > 1
  $stderr.puts("#{parser.program_name}: multiple stdin")
  exit(false)
end

errors = 0
schema = ARGF.file.is_a?(File) ? Pathname.new(ARGF.file.path) : ARGF.file.read
schemer = JSONSchemer.schema(schema)

while ARGV.any?
  data = JSON.parse(ARGF.skip.file.read)
  schemer.validate(data).each do |error|
    exit(false) if options[:errors] == 0
    errors += 1
    $stdout.puts(JSON.generate(error))
    exit(false) if options[:errors] == errors
  end
end

exit(errors.zero?)

Version data entries

16 entries across 16 versions & 1 rubygems

Version Path
json_schemer-2.4.0 exe/json_schemer
json_schemer-2.3.0 exe/json_schemer
json_schemer-2.2.1 exe/json_schemer
json_schemer-2.2.0 exe/json_schemer
json_schemer-2.1.1 exe/json_schemer
json_schemer-2.1.0 exe/json_schemer
json_schemer-2.0.0 exe/json_schemer
json_schemer-1.0.3 exe/json_schemer
json_schemer-1.0.2 exe/json_schemer
json_schemer-1.0.1 exe/json_schemer
json_schemer-1.0.0 exe/json_schemer
json_schemer-0.2.25 exe/json_schemer
json_schemer-0.2.24 exe/json_schemer
json_schemer-0.2.23 exe/json_schemer
json_schemer-0.2.22 exe/json_schemer
json_schemer-0.2.21 exe/json_schemer