#include #include #include #include #include using nlohmann::json; using nlohmann::json_schema::json_validator; using namespace std; void print_usage(const string& prog_name) { cerr << "Usage: " << prog_name << " -s -j " << endl; } int main(int argc, char* argv[]) { string schema_path, data_path; // Simple argument parsing for (int i = 1; i < argc; ++i) { string arg = argv[i]; if ((arg == "-s" || arg == "--schema") && i + 1 < argc) { schema_path = argv[++i]; } else if ((arg == "-j" || arg == "--json") && i + 1 < argc) { data_path = argv[++i]; } else { print_usage(argv[0]); return 1; } } if (schema_path.empty() || data_path.empty()) { print_usage(argv[0]); return 1; } ifstream schema_file(schema_path); ifstream data_file(data_path); if (!schema_file.is_open() || !data_file.is_open()) { cerr << "Error: Could not open one or both files." << endl; return 2; } json schema, document; try { schema_file >> schema; data_file >> document; } catch (const json::parse_error& e) { cerr << "Parse error: " << e.what() << endl; return 3; } try { json_validator validator; validator.set_root_schema(schema); validator.validate(document); cout << "Valid" << endl; } catch (const std::exception& e) { cerr << "Validation failed: " << e.what() << endl; return 4; } return 0; }