#process #command #subprocess #cmd #run

babash

一个围绕 std::process::Command 的微小包装,以简洁性为代价牺牲性能。

2 个不稳定版本

0.2.0 2021年2月2日
0.1.1 2020年12月30日

#22 in #subprocess

MIT/Apache

6KB
96 代码行,不包括注释

babash

一个围绕 std::process::Command 的微小包装,牺牲性能以换取简洁性。

  • 适用于 Linux 和 Windows
  • 假定环境为 utf-8
  • 记录所有命令和响应,并使用适当的级别

示例

fn main() -> std::io::Result<()> {
    stderrlog::new().verbosity(4).init().unwrap();
    let r = babash::call("foo")?; // doesn't check for exit status
    assert_eq!(r.code, Some(127));
    babash::ensure_call("bar")?; // produces an error on an bad exit status
    Ok(())
}

生成以下日志输出

INFO - Calling: foo
DEBUG - Response {
    command: "foo",
    code: Some(
        127,
    ),
    success: false,
    stdout: "",
    stderr: "sh: 1: foo: not found\n",
}
INFO - Calling: bar
ERROR - Response {
    command: "bar",
    code: Some(
        127,
    ),
    success: false,
    stdout: "",
    stderr: "sh: 1: bar: not found\n",
}
Error: Custom { kind: Other, error: "Unsuccessful call: Response {\n    command: \"bar\",\n    code: Some(\n
  127,\n    ),\n    success: false,\n    stdout: \"\",\n    stderr: \"sh: 1: bar: not found\\n\",\n}" }

依赖项

~88KB