1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#[macro_export()]
macro_rules! sh {
    ($var:expr, $var2:expr) => {
        let err = format!("Failed to execute {}", $var);
        let output = Command::new("sh")
            .arg("-c")
            .arg($var)
            .path()
            .current_dir($var2.clone())
            .output()
            .expect(&err);

        if output.status.success() {
            // Print the stdout if the command executed successfully
            let stdout = String::from_utf8_lossy(&output.stdout);
            println!("{}", stdout);
        } else {
            // Print the stderr if the command failed
            let stderr = String::from_utf8_lossy(&output.stderr);
            println!("Command failed:\n{}", stderr);
        }
    };
}