#include "json-schema-validator.hpp" #include #include using nlohmann::json; using nlohmann::json_validator; static void usage(const char *name) { std::cerr << "Usage: " << name << " < \n"; exit(EXIT_FAILURE); } int main(int argc, char *argv[]) { if (argc != 2) usage(argv[0]); std::fstream f(argv[1]); if (!f.good()) { std::cerr << "could not open " << argv[1] << " for reading\n"; usage(argv[0]); } json schema; try { f >> schema; } catch (std::exception &e) { std::cerr << e.what() << " at " << f.tellp() << "\n"; return EXIT_FAILURE; } json document; try { std::cin >> document; } catch (std::exception &e) { std::cerr << e.what() << " at " << f.tellp() << "\n"; return EXIT_FAILURE; } try { json_validator validator; validator.set_schema("#", schema); validator.validate(document); } catch (std::exception &e) { std::cerr << "schema validation failed\n"; std::cerr << e.what() << "\n"; return EXIT_FAILURE; } std::cerr << std::setw(2) << document << "\n"; return EXIT_SUCCESS; }