tendermint_testgen/
jsonatr.rs1use 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}