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