1 个不稳定版本
0.1.0 | 2020 年 5 月 10 日 |
---|
#198 在 #异步
61KB
1.5K SLoC
Longshoreman
用法
use longshoreman::{Docker, Result};
#[tokio::main]
async fn main() -> Result<()> {
let docker = Docker::new();
// Pull an image
docker.images().pull("ubuntu").tag("latest").send().await?;
// Create a container
let id = docker
.containers()
.create("ubuntu")
.name("my-container")
.send()
.await?
.id;
// Remove the container
docker
.containers()
.remove(id)
.force(true)
.send()
.await?;
Ok(())
}
设计
这个小的 Docker 客户端最初是尝试将 Shiplift 更新到最新版本,但它已经长出了胳膊和腿。
目前还没有实现很多端点,但我的目标是随着它们的增加,它们都经过了良好的测试并且类型安全。
目前处于早期阶段,我愿意接受对特定端点的兴趣笔记,以及拉取请求。
- 基于
std::future::Future
的异步/等待支持 - 纯 Rust,位于经过实战检验的 Hyper HTTP 客户端之上
- 构建器 API - 只使用你需要的函数,减少需要显式引入作用域的类型。
贡献
- 鉴于存在大量端点以及每个端点提供的选项数量,我完全依赖拉取请求来帮助我处理一些这些
- 请求处理的复杂逻辑被集中管理,简化了单个端点的实现
- 我不太可能接受没有单元测试的拉取请求。稍后,我还希望为每个端点进行全面的集成测试。(这最初很困难,因为需要多个端点的组合才能创建有意义的集成测试)
依赖项
~13MB
~243K SLoC