1use jsona::dom::Node;
2use jsona_schema_validator::JSONASchemaValidator;
3
4fn main() {
5 let mut args = std::env::args();
6 args.next();
7 let (schema_jsona_path, plain_jsona_path) =
8 if let (Some(v1), Some(v2)) = (args.next(), args.next()) {
9 (v1, v2)
10 } else {
11 println!("Usage: validate <schema-jsona> <to-validate-jsona>");
12 return;
13 };
14 let schema_jsona = std::fs::read_to_string(std::path::Path::new(&schema_jsona_path))
15 .expect("not found schema jsona file");
16 let schema_node: Node = schema_jsona.parse().expect("invalid schema jsona file");
17 let validator =
18 JSONASchemaValidator::try_from(&schema_node).expect("invalid schema jsona schema");
19 let plain_jsona = std::fs::read_to_string(std::path::Path::new(&plain_jsona_path))
20 .expect("not found to validate jsona file");
21 let plain_node: Node = plain_jsona.parse().expect("invalid to validate jsona file");
22 let errors = validator.validate(&plain_node);
23 errors.iter().for_each(|err| {
24 println!("{}", err);
25 });
26}