Skip to content

A (very early) asynchronous Rust library for the Docker Hub API v2

License

Apache-2.0, MIT licenses found

Licenses found

Apache-2.0
LICENSE-APACHE
MIT
LICENSE-MIT
Notifications You must be signed in to change notification settings

alvarobartt/hub-tool-rs

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

34 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

hub-tool

Crates.io Documentation

A (very early) asynchronous Rust library for the Docker Hub API v2

Warning

At the moment only listing the repositories and the tags for a given org or username is supported, the SDK may be unstable and subject to breaking changes. Also due to the Docker Hub API not being really stable and not having a nice documentation this project is probably going to be stale until the API specification is clearer and works as expected.

Get started with cargo add hub-tool and a Docker Hub account, to generate a Personal Access Token (PAT) from https://app.docker.com/settings/personal-access-tokens, to send request to the Docker Hub API from hub-tool.

Usage

use anyhow::Context;
use hub_tool::DockerHubClient;

#[tokio::main]
async fn main() -> anyhow::Result<()> {
    let client = DockerHubClient::new("dckr_pat_***")
        .context("couldn't initialize the docker client")?;

    // Fetch the repositories under a given org or username on the Docker Hub
    let repositories = client.list_repositories("ollama")
        .await
        .context("failed while fetching the repositories")?;

    // Fetch the tags for a given repository on the Docker Hub
    let tags = client.list_tags("ollama", "quantize")
        .await
        .context("failed while fetching the tags")?;

    Ok(())
}

What's missing?

  • Support for the rest of the endpoints exposed by the Docker Hub API, read more about those at https://docs.docker.com/reference/api/hub/latest/
  • Handle response headers for rate limiting
  • Make sure that requests are sent in batches, respecting those limits.
  • Add support for custom Docker Registries (AFAIK the API differs a bit so that would imply most likely a different client + whatever the registry needs e.g. for Docker Registries in AWS the endpoints sometimes provide redirect URIs within the response etc.)
  • Explore different ways of enhancing hub-tool to be more than a Docker Hub API wrapper, and add functionality on top e.g. filtering.

License

This project is licensed under either of the following licenses, at your option:

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in this project by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

About

A (very early) asynchronous Rust library for the Docker Hub API v2

Topics

Resources

License

Apache-2.0, MIT licenses found

Licenses found

Apache-2.0
LICENSE-APACHE
MIT
LICENSE-MIT

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages