4个版本 (2个破坏性更新)
0.4.0 | 2024年3月28日 |
---|---|
0.3.0 | 2024年3月22日 |
0.2.1 | 2024年3月21日 |
0.2.0 | 2024年3月21日 |
#494 in 文本处理
每月下载量 27次
在 2 crate 中使用
61KB
927 行
command-error
为 std::process::Command
提供详细错误信息、状态码检查和UTF-8解码的扩展trait。
lib.rs
:
command_error
提供了 CommandExt
trait,用于运行命令并检查其退出状态
use std::process::Command;
use command_error::CommandExt;
let err = Command::new("sh")
.args(["-c", "echo puppy; false"])
.output_checked_utf8()
.unwrap_err();
assert_eq!(
err.to_string(),
indoc!(
"`sh` failed: exit status: 1
Command failed: `sh -c 'echo puppy; false'`
Stdout:
puppy"
)
);
错误信息详细且有用。还提供了额外的功能,用于覆盖默认的成功逻辑(对于认为 2
是合理退出码的奇怪工具)以及用于转换输出(例如,将命令输出解析为JSON,同时在错误信息中保留有关生成输出的命令的信息)。
强制使用 command_error
如果您想确保在项目中使用 CommandExt
方法而不是纯 Command
方法,您可以将此段代码添加到项目根目录下的 clippy.toml
[[disallowed-methods]]
path = "std::process::Command::output"
reason = "Use command_error::CommandExt::output_checked[_with][_utf8]"
[[disallowed-methods]]
path = "std::process::Command::status"
reason = "Use command_error::CommandExt::status_checked[_with]"
[[disallowed-methods]]
path = "std::process::Command::spawn"
reason = "Use command_error::CommandExt::spawn_checked"
[[disallowed-methods]]
path = "std::process::Child::try_wait"
reason = "Use command_error::ChildExt::try_wait_checked[_with]"
[[disallowed-methods]]
path = "std::process::Child::wait"
reason = "Use command_error::ChildExt::wait_checked[_with]"
[[disallowed-methods]]
path = "std::process::Child::wait_with_output"
reason = "Use command_error::ChildExt::output_checked[_with][_utf8]"
依赖关系
~140KB