6个版本
0.1.5 | 2019年8月22日 |
---|---|
0.1.4 | 2019年7月9日 |
#1435 in 异步
每月22次下载
33KB
614 行
巴哇哇:项目管理
用法
首先,将以下内容添加到您的 Cargo.toml
[dependencies]
bawawa = "0.1"
接下来,将以下内容添加到您的crate
extern crate bawawa;
许可证
此项目根据以下之一许可
- Apache License,版本2.0,(LICENSE-APACHE 或 https://apache.ac.cn/licenses/LICENSE-2.0)
- MIT许可证 (LICENSE-MIT 或 http://opensource.org/licenses/MIT)
任选其一。
贡献
除非您明确声明,否则您提交给 bawawa
的任何贡献,根据 Apache-2.0 许可证定义,应双许可如上所述,无需任何额外条款或条件。
lib.rs
:
过程管理
此模块提供了对标准库的 std::process::Command
和 std::process::Child
及相关类型的封装。
我们提供了一种具有观点的API,其中默认捕获标准输入和输出。错误也被封装以提供对失败原因的更好理解(特别是PID或命令行)。
在使用此API时有一些事项需要注意
- 一旦
Process
被释放,相关的进程将被终止; Process
捕获 Stdout 和 Stderr,如果您不读取标准输出,它将不会在您的终端上可见;Process
也控制 Stdin- API使用了
Future
框架。如果您不将其推入运行时或调用wait
,函数将不会执行任何操作。
程序 Program
Program
是一个对象,它保证(在合理范围内)执行环境中存在一个程序。在构建时,会检查 Program
,以确保一旦创建,就可以知道它是否存在以及它是否有适当的执行权限。
#
let rustc = Program::new("rustc".to_owned())?;
命令 Command
这是命令行,Program
,以及启动新的 Process
所必需的参数和相关环境变量。
#
let mut get_rustc_version = Command::new(rustc);
get_rustc_version.arguments(&["--version"]);
println!("{}", get_rustc_version);
启动 Process
一旦 Command
准备好合适的参数,就可以 启动 一个 Process
。trait Control
允许跟踪已启动的 Process
的生命周期。
#
let process = Process::spawn(get_rustc_version)?;
println!("spawned command: '{}' (PID: {})", process.command(), process.id());
我们提供了使用 StandardOutput::capture_stdout
或 StandardError::capture_stderr
捕获标准输出和标准错误输出,以及使用 StandardInput::send_stdin
向标准输入发送项的函数。
#
let mut capture_stdout = process
.capture_stdout(
// specify the codec, the way to decode data
// from the captured output. Here we read line
// by line.
tokio_codec::LinesCodec::new()
)
.wait(); // from the _futures_ crate's Stream trait
println!("compiler: {}", capture_stdout.next().unwrap()?);
// compiler: rustc 1.35.0 (3c235d560 2019-05-20)
依赖关系
~6.5MB
~122K SLoC