obnam_benchmark/
summain.rs

1use std::path::Path;
2use std::process::Command;
3
4#[derive(Debug, thiserror::Error)]
5pub enum SummainError {
6    #[error("failed to run summain: {0}")]
7    Run(std::io::Error),
8}
9
10pub fn summain(root: &Path) -> Result<String, SummainError> {
11    let output = Command::new("summain")
12        .arg(".")
13        .current_dir(root)
14        .output()
15        .map_err(SummainError::Run)?;
16    if output.status.code() != Some(0) {
17        eprintln!("{}", String::from_utf8_lossy(&output.stdout));
18        eprintln!("{}", String::from_utf8_lossy(&output.stderr));
19        std::process::exit(1);
20    }
21
22    Ok(String::from_utf8_lossy(&output.stdout)
23        .to_owned()
24        .to_string())
25}