13 个版本
0.3.0 | 2021 年 4 月 6 日 |
---|---|
0.2.9 | 2021 年 2 月 24 日 |
0.2.8 | 2021 年 1 月 28 日 |
0.1.2 | 2021 年 1 月 25 日 |
#1451 在 Rust 模式
每月 46 次下载
8KB
174 行
Btl
Btl 是一个简单的库,它使使用 Rust 进行 shell 脚本变得更容易。它最初是为了用于 build.rs 文件而编写的,但也可以用于更复杂的目的。
它的主要前提是将 shell 脚本与 Rust 以一种符合人体工程学的方式集成。这在 Windows 和 Unix 系统上都可以工作。
Btl 非常简单,由六个具有完全相同语法的宏组成。这些宏允许将 shell 脚本嵌入到 Rust 中,同时允许在人体工程学上进行极端定制。
宏
- shell!{}
- detach!{}
- execute!{}
- exec!{}
- cd!{}
tokio 的支持在 "tokio_shell" 功能下,它们的语法和名称相同,但它们有 "async_" 前缀。
注意:btl 使用 sh 作为 Unix 后端,使用 powershell 作为 Windows 后端。
如果您偶然发现任何错误,请在 GitHub 仓库中提出问题。
示例
fn shell() -> Result<(), std::io::Error> {
// all macros use the try operator to avoid unwrapping
// creates a detached process that may outlive the current process
detach! {
"touch m.txt";
"sleep {}", 10;
"rm m.txt";
};
// changes directory
cd!("..").unwrap();
let contents = execute! {
"ls";
};
// returns a string containing the stdout of the process
println!("contents {:?}", contents);
// returns a bool indicating if the operation was successful
if exec! {
"ls";
} {
println!("success")
} else {
println!("not successful")
}
shell! {
"ls {}", "-la";
};
Ok(())
}
依赖项
~0–11MB
~77K SLoC