#check #script #automation #configuration #action #system #instructions

pass_tool

用于制作Rust自动化脚本的系统配置工具

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 配置

Download history 105/week @ 2024-04-30 48/week @ 2024-05-07 1/week @ 2024-05-14 4/week @ 2024-05-21

358 每月下载次数

MIT 许可证

105KB
3K SLoC

Pass

文档 / Crate

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