validate/
validate.rs

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}