3 个不稳定版本
0.2.1 | 2024 年 7 月 29 日 |
---|---|
0.2.0 | 2024 年 7 月 21 日 |
0.1.0 | 2024 年 7 月 13 日 |
#128 in 配置
386 次每月下载
44KB
813 行
🏃🏽 glrcfg
Rust 实现 GitLab Runners 高级配置文件格式
如果您不幸需要生成用于高级 GitLab runner 设置的配置文件(您可以在此处获取其文档 这里),并且需要使用 Rust 来实现,那么这个库就是您需要的。
动机
对我们来说,答案很简单:runrs。我们的主要语言是 Rust,并且由于 Python 中也没有类似的东西,我们决定将其作为一个有趣的 Rust 生态系统贡献。尽管它可能有点小众。
(我们有时也会用到 Go,但我们希望将其限制到最小。)
用法
运行 cargo add glrcfg
即可。这里有文档和 官方 GitLab 格式文档 - 我们将所有术语和默认值都保持与那里完全一致。
查看 glrcfg
crate 的文档以了解如何使用它,特别是其功能标志。有一个 tracing
功能可以通过 tracing
启用一些日志记录,还有一个 sqlx
功能实现了 SQLx 特性 sqlx::Type
, sqlx::Encode
和 sqlx::Decode
特性,以便您可以将我们的类型用作数据库字段。
关于人体工学的说明
您会发现配置文件的所有组件都实现了作为具有所有字段为 pub
的结构体,并且实现了 Default::default
。这样,您可以使用 Component { field: value, ..Default::default() }
模式从您拥有的任何数据模型中简单地创建组件。
组件具有某些语义。例如,全局部分中的 concurrent
字段必须是非零正整数,log_level
字段必须是日志级别列表中的一个,而 connection_max_age
必须是 Golang 耗时字符串(例如 1h30m
)。这个库使用或实现了强制执行这些约束的类型,因此无法创建无效的配置。换句话说:不能简单地将一个 &str
作为 Golang 耗时字符串传递 - 您必须使用 GolangDuration::parse("1h30m")
(或 "1h30m".parse()
)并传递结果。
支持
这是一个开源项目,所以没有具体支持。如果您在存储库中打开一个问题,我们会尽力帮助您,但没有任何承诺。
许可证
许可如下:
- Apache 许可证 2.0(《LICENSE-APACHE》或 http://www.apache.org/licenses/LICENSE-2.0)
- MIT 许可证(《LICENSE-MIT》或 http://opensource.org/licenses/MIT)
任选其一。
贡献
除非您明确声明,否则您提交的任何贡献,根据 Apache-2.0 许可证定义的,将按上述方式双许可,没有额外的条款或条件。
稳健的工程。可持续的代码。
依赖关系
~4.5–8MB
~164K SLoC