1 个不稳定版本
0.1.0 | 2024年4月5日 |
---|
1215 在 进程宏
149 每月下载量
用于 2 个crate(通过 compose_spec)
93KB
1.5K 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
当前可以编译的最小Rust编译器版本是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
- 安装 nightly Rust 工具链:
rustup toolchain install nightly
。 - 安装 cargo-docs-rs。
cargodocs-rs
- 安装 nightly Rust 工具链:
- 拼写检查
- 安装 typos。
typos
- msrv
- 安装 cargo-msrv。
cargomsrv verify
- 最小版本
- 安装 nightly Rust 工具链:
rustup toolchain install nightly
。 - 安装 cargo-hack。
- 安装 cargo-minimal-versions。
cargo最小版本检查 --工作区
cargo最小版本测试 --工作区
- 安装 nightly Rust 工具链:
许可证
compose_spec
的所有源代码均受 Mozilla 公共许可证 v2.0 许可。有关更多信息,请查看 LICENSE 文件。
Compose 规范本身受 Apache 许可证 v2.0 许可。有关更多信息,请查看该项目的 LICENSE 文件。
依赖
~270–720KB
~17K SLoC