1 个不稳定版本

0.1.0 2020 年 5 月 10 日

#198#异步

MIT 许可证

61KB
1.5K SLoC

Longshoreman

codecov Continuous integration

用法

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