#compose #docker #podman

compose_spec

用于从/到 compose-spec 序列化和反序列化的类型

2 个不稳定版本

0.2.0 2024 年 4 月 24 日
0.1.0 2024 年 4 月 5 日

#407 in 网络编程

Download history 31/week @ 2024-05-03 9/week @ 2024-05-10 151/week @ 2024-05-17 120/week @ 2024-05-24 65/week @ 2024-05-31 60/week @ 2024-06-07 46/week @ 2024-06-14 44/week @ 2024-06-21 24/week @ 2024-06-28 29/week @ 2024-07-05 28/week @ 2024-07-12 26/week @ 2024-07-19 54/week @ 2024-07-26 34/week @ 2024-08-02 42/week @ 2024-08-09 14/week @ 2024-08-16

148 每月下载量
用于 podlet

MPL-2.0 许可证

520KB
11K SLoC

compose_spec

Crates.io Version Crates.io MSRV docs.rs License GitHub Actions CI Workflow Status

compose_spec 是一个用于从/到 Compose 规范 进行序列化和反序列化的 Rust 库 crate。

compose_spec 力求实现

  • 惯用的 Rust 🦀
    • 使用标准库中的语义合适的数据类型,如 PathBufDuration
  • 正确性
    • 值将进行全面验证和解析。
    • 使用枚举表示相互冲突的字段。例如,在 services 中,network_modenetworks 被合并到 network_config
  • 易用性
    • 全面文档化,尽管 文档 可以通过更多示例和解释来完善,在这方面有所帮助将受到欢迎!
    • 有用的函数,例如在具有多种表示形式的价值的简短和长语法形式之间进行转换(例如 buildports)。

有关详细信息,请参阅 文档

示例

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
  • 拼写检查
  • msrv
  • 最小版本
    • 安装夜间 Rust 工具链,rustup toolchain install nightly
    • 安装 cargo-hack
    • 安装 cargo-minimal-versions
    • cargominimal-versions check --workspace
    • cargominimal-versions test --workspace
  • semver-checks

许可证

compose_spec 的所有源代码均根据 Mozilla 公共许可证 v2.0 授权。有关更多信息,请查看 LICENSE 文件。

Compose 规范本身根据 Apache 许可证 v2.0 授权。有关更多信息,请查看该项目的 LICENSE 文件。

依赖项

~3–4MB
~108K SLoC