1
0
Fork 0
mirror of https://github.com/imjasonh/krust synced 2026-07-08 06:45:32 +00:00
krust/Cargo.toml
Jason Hall 9dc786c3f1
feat: replace vendor/oci-distribution with direct OCI Distribution Spec implementation
Replace the vendor/oci-distribution dependency with a custom implementation
that directly follows the OCI Distribution Specification using hyper for HTTP.

Key improvements:
- Direct HTTP implementation using hyper, hyper-util, and hyper-tls
- Support for Bearer token, Basic auth, and Anonymous authentication
- Cross-registry blob copying for layered images
- Multi-platform manifest list support
- Better error handling and redirect support
- Reduced dependency footprint

Technical changes:
- Remove vendor/oci-distribution dependency
- Add hyper ecosystem dependencies for HTTP client
- Implement OCI types: OciDescriptor, OciImageManifest, OciImageIndex
- Add ImageReference parsing with registry/repository/tag/digest support
- Implement registry authentication flows (Bearer token requests)
- Add blob upload/download with redirect handling
- Support manifest pulling with image index resolution
- Fix manifest size validation for Docker compatibility
- Update integration tests to use new registry auth types
- Handle docker.io redirect to registry-1.docker.io correctly

This enables more flexible authentication handling and reduces external
dependencies while maintaining full OCI compliance.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-08 22:25:10 -04:00

41 lines
1.1 KiB
TOML

[package]
name = "krust"
version = "0.1.0"
edition = "2021"
authors = ["Jason Hall <imjasonh@gmail.com>"]
description = "A container image build tool for Rust applications"
license = "MIT OR Apache-2.0"
repository = "https://github.com/imjasonh/krust"
keywords = ["container", "docker", "oci", "build", "rust"]
categories = ["command-line-utilities", "development-tools"]
[dependencies]
clap = { version = "4.5", features = ["derive", "env"] }
tokio = { version = "1.35", features = ["full"] }
anyhow = "1.0"
serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0"
sha256 = "1.5"
chrono = "0.4"
tar = "0.4"
flate2 = "1.0"
hyper = { version = "1.0", features = ["full"] }
hyper-util = { version = "0.1", features = ["full"] }
http-body-util = "0.1"
hyper-tls = "0.6"
tracing = "0.1"
tracing-subscriber = { version = "0.3", features = ["env-filter"] }
dirs = "6.0"
toml = "0.8"
which = "8.0"
tempfile = "3.9"
base64 = "0.22"
[dev-dependencies]
tempfile = "3.9"
assert_cmd = "2.0"
predicates = "3.0"
[[example]]
name = "auto_auth_demo"
path = "examples/auto_auth_demo.rs"