2 个不稳定版本
0.2.0 | 2024 年 4 月 24 日 |
---|---|
0.1.0 | 2024 年 4 月 5 日 |
#407 in 网络编程
148 每月下载量
用于 podlet
520KB
11K SLoC
compose_spec
compose_spec
是一个用于从/到 Compose 规范 进行序列化和反序列化的 Rust 库 crate。
compose_spec
力求实现
- 惯用的 Rust 🦀
- 使用标准库中的语义合适的数据类型,如
PathBuf
和Duration
。
- 使用标准库中的语义合适的数据类型,如
- 正确性
- 值将进行全面验证和解析。
- 使用枚举表示相互冲突的字段。例如,在
services
中,network_mode
和networks
被合并到network_config
。
- 易用性
- 全面文档化,尽管 文档 可以通过更多示例和解释来完善,在这方面有所帮助将受到欢迎!
- 有用的函数,例如在具有多种表示形式的价值的简短和长语法形式之间进行转换(例如
build
和ports
)。
有关详细信息,请参阅 文档。
示例
use compose_spec::{Compose, Service, service::Image};
let yaml = "\
services:
caddy:
image: docker.io/library/caddy:latest
ports:
- 8000:80
- 8443:443
volumes:
- ./Caddyfile:/etc/caddy/Caddyfile
- caddy-data:/data
volumes:
caddy-data:
";
// Deserialize `Compose`
let compose: Compose = serde_yaml::from_str(yaml)?;
// Serialize `Compose`
let value = serde_yaml::to_value(&compose)?;
// Get the `Image` of the "caddy" service
let caddy: Option<&Service> = compose.services.get("caddy");
let image: &Option<Image> = &caddy.unwrap().image;
let image: &Image = image.as_ref().unwrap();
assert_eq!(image, "docker.io/library/caddy:latest");
assert_eq!(image.name(), "docker.io/library/caddy");
assert_eq!(image.tag(), Some("latest"));
最低支持的 Rust 版本 (MSRV)
compose_spec
可以当前编译的最低版本为 1.70,已在 CI 中进行测试。提高 MSRV 被认为不是破坏性的变更。
贡献
欢迎贡献、建议和/或评论!请随意创建一个 问题、讨论 或 pull request。通常,在通过 pull request 提交更改之前,最好是先讨论功能请求或创建一个用于报告错误的 issue。
项目布局
compose_spec
由两个在 Cargo 工作区中设置的包组成。根包 compose_spec
是主库。另一个包 compose_spec_macros
位于同名目录中,是一个用于 compose_spec
的过程宏库。 compose_spec_macros
不是为在 compose_spec
库之外使用而设计的。
本地 CI
如果您在拉取请求中提交代码更改并希望在本地运行 CI 任务,请使用以下命令
- 格式:
cargo fmt --check --all
- clippy:
cargo clippy --workspace --tests
- 测试:
cargo test --workspace -- --include-ignored
- 文档:
cargo doc --workspace --document-private-items
- docs-rs
- 安装夜间 Rust 工具链,
rustup toolchain install nightly
。 - 安装 cargo-docs-rs。
cargodocs-rs
- 安装夜间 Rust 工具链,
- 拼写检查
- 安装 typos。
typos
- msrv
- 安装 cargo-msrv。
cargomsrv verify
- 最小版本
- 安装夜间 Rust 工具链,
rustup toolchain install nightly
。 - 安装 cargo-hack。
- 安装 cargo-minimal-versions。
cargominimal-versions check --workspace
cargominimal-versions test --workspace
- 安装夜间 Rust 工具链,
- semver-checks
- 安装 cargo-semver-checks。
cargosemver-checks
许可证
compose_spec
的所有源代码均根据 Mozilla 公共许可证 v2.0 授权。有关更多信息,请查看 LICENSE 文件。
Compose 规范本身根据 Apache 许可证 v2.0 授权。有关更多信息,请查看该项目的 LICENSE 文件。
依赖项
~3–4MB
~108K SLoC