6个版本
0.3.6 | 2024年5月6日 |
---|---|
0.3.4 | 2023年11月13日 |
0.2.0 | 2023年11月8日 |
0.1.0 | 2023年10月11日 |
#319 in 配置
358 每月下载次数
105KB
3K SLoC
Pass
Pass
- 是一个系统配置工具。配置更改被描述为 检查
和 动作
。 检查
用于检查系统的当前状态(例如,如果已安装nginx)。 动作
改变系统的状态(例如,安装nginx)。 Pass
允许应用更改或根据描述的检查验证是否可以应用更改。
如何使用
检查
和 动作
被组织成 指令
,指令列表形成 Playbook
。
检查
- 只检查系统的当前状态,不进行任何更改,只是一个真/假标志
动作
- 改变系统设置,可能失败
Playbook
- 包含 环境检查
和指令列表。 环境检查
在执行任何指令之前进行检查。
指令
- 包含 环境检查
、确认检查
和要应用的动作
环境检查
在动作之前进行检查,并且必须全部为true
确认检查
在动作之前和之后进行检查,如果动作之前为false
- 动作将被应用,并在动作之后再次检查确认检查
。现在所有检查都必须为true
,如果动作之前为true
- 动作将被跳过(动作被视为已应用)
示例
这是一个 "Hello, World!" 示例
use pass_tool::{actions::write_file, checks::is_file, instruction, run_cli, Playbook};
fn main() {
let file_path = "pass-example__hello_world.txt";
let playbook = Playbook::new(
"Hello world",
"This example creates file with \"Hello, world!\" text, if file already exists it will do nothing",
[],
[instruction(write_file(file_path, "Hello, world!")).confirm(is_file(file_path))],
);
run_cli(playbook, include_str!("hello_world.rs"));
}
另一个在 examples/
文件夹中的例子是 https_webserver
,它将配置 nginx 以使用 letsencrypt 证书支持 https。
更多链接
此外,我正在制作笔记和待办事项应用 https://heaplist.app/
依赖项
~6–19MB
~226K SLoC