query_schema/
query-schema.rs

1use jsona::dom::{Keys, Node};
2use jsona_schema_validator::JSONASchemaValidator;
3
4fn main() {
5    let mut args = std::env::args();
6    let jsona_file = args
7        .nth(1)
8        .expect("Usage: query-schema <schema-jsona-file> [keys]");
9    let keys = args.next();
10    let jsona_file_path = std::path::Path::new(&jsona_file);
11    let jsona_content =
12        std::fs::read_to_string(jsona_file_path).expect("not found schema jsona file");
13    let node: Node = jsona_content.parse().expect("invalid file");
14    let validator = JSONASchemaValidator::try_from(&node).expect("invalid schema");
15    let keys = match keys {
16        Some(keys) => keys.parse().expect("invalid query path"),
17        None => Keys::default(),
18    };
19    let result = serde_json::to_string_pretty(&validator.pointer(&keys)).unwrap();
20    println!("{}", result);
21}