tendermint_testgen/
jsonatr.rs

1use std::io;
2
3use serde::Deserialize;
4
5use crate::command::*;
6
7#[derive(Deserialize, Clone, Debug)]
8pub struct JsonatrTransform {
9    pub input: String,
10    pub include: Vec<String>,
11    pub output: String,
12}
13
14pub fn run_jsonatr_transform(dir: &str, transform: JsonatrTransform) -> io::Result<CommandRun> {
15    let mut cmd = Command::new();
16    cmd.program("jsonatr");
17    cmd.arg("--in");
18    cmd.arg(&transform.input);
19    cmd.arg("--out");
20    cmd.arg(&transform.output);
21    for include in transform.include {
22        cmd.arg("--use");
23        cmd.arg(&include);
24    }
25    if !dir.is_empty() {
26        cmd.current_dir(dir);
27    }
28    match cmd.spawn() {
29        Ok(run) => {
30            if run.status.success() {
31                Ok(run)
32            } else {
33                Err(io::Error::new(io::ErrorKind::Interrupted, run.stderr))
34            }
35        },
36        Err(e) => Err(e),
37    }
38}