30 个版本 (12 个重大变更)
0.13.0 | 2024 年 7 月 19 日 |
---|---|
0.11.0 | 2024 年 6 月 21 日 |
0.7.2 | 2024 年 3 月 1 日 |
0.7.0 | 2023 年 12 月 12 日 |
0.1.5 | 2021 年 7 月 5 日 |
#150 在 数据结构
每月 1,705 次下载
用于 2 crates
38KB
914 代码行
Docker Compose Types
非常欢迎贡献,这个 crate 的目的是允许以尽可能少的错误空间安全地序列化 docker-compose 文件。
示例用法
解析 docker-compose 文件
use docker_compose_types::Compose;
fn main() {
let file_payload =
std::fs::read_to_string("tests/fixtures/v3-full/docker-compose.yml").unwrap();
let compose_content = match serde_yaml::from_str::<Compose>(&file_payload) {
Ok(c) => c,
Err(e) => panic!("Failed to parse docker-compose file: {}", e),
};
println!("Parsed docker-compose file: {:#?}", compose_content);
}
从 crate 的类型创建 docker-compose 文件
use docker_compose_types::{Compose, Service, Services, SingleService};
use serde_yaml;
fn main() {
let compose_content = Compose {
version: Some("3.8".to_string()),
services: {
let mut services = indexmap::IndexMap::new();
services.insert(
"web".to_string(),
Some(Service {
image: Some("nginx:latest".to_string()),
..Default::default()
}),
);
Some(Services(services))
},
..Default::default()
};
let target_file = std::path::Path::new("docker-compose.yml");
// serialize to string
let serialized = match serde_yaml::to_string(&compose_content) {
Ok(s) => s,
Err(e) => panic!("Failed to serialize docker-compose file: {}", e),
};
// serialize to file
std::fs::write(target_file, serialized).unwrap();
}
许可协议
根据您的选择,在以下许可协议下获得许可:Apache 许可协议,版本 2.0 或 MIT 许可协议。除非您明确说明,否则任何有意提交以包含在此 crate 中并由您定义的贡献,根据 Apache-2.0 许可协议,应按上述方式双重许可,不附加任何额外条款或条件。
依赖关系
~2–12MB
~132K SLoC