mirror of
https://github.com/CloudNebulaProject/refraction-forger.git
synced 2026-04-10 13:20:40 +00:00
Standalone workspace with 4 crates for building optimized OS images and publishing to OCI registries: - spec-parser: KDL image spec parsing with include resolution and profile-based conditional filtering - forge-oci: OCI image creation (tar layers, manifests, Image Layout) and registry push via oci-client - forge-engine: Build pipeline with Phase 1 (rootfs assembly via native package managers with -R) and Phase 2 (QCOW2/OCI/artifact targets), plus dyn-compatible ToolRunner trait for external tool execution - forger: CLI binary with build, validate, inspect, push, and targets commands Ported KDL specs and overlay files from the vm-manager prototype. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
58 lines
1 KiB
TOML
58 lines
1 KiB
TOML
[workspace]
|
|
resolver = "3"
|
|
members = [
|
|
"crates/spec-parser",
|
|
"crates/forge-oci",
|
|
"crates/forge-engine",
|
|
"crates/forger",
|
|
]
|
|
|
|
[workspace.package]
|
|
edition = "2024"
|
|
rust-version = "1.85"
|
|
|
|
[workspace.dependencies]
|
|
# Parsing
|
|
knuffel = "3.2"
|
|
|
|
# Error handling & diagnostics
|
|
miette = { version = "7", features = ["fancy"] }
|
|
thiserror = "2"
|
|
|
|
# CLI
|
|
clap = { version = "4.5", features = ["derive", "env"] }
|
|
|
|
# Serialization
|
|
serde = { version = "1", features = ["derive"] }
|
|
serde_json = "1"
|
|
|
|
# Async runtime
|
|
tokio = { version = "1", features = ["rt-multi-thread", "macros", "fs", "process", "time"] }
|
|
|
|
# Logging
|
|
tracing = "0.1"
|
|
tracing-subscriber = { version = "0.3", features = ["env-filter"] }
|
|
|
|
# OCI
|
|
oci-spec = "0.8"
|
|
oci-client = "0.15"
|
|
|
|
# Crypto & encoding
|
|
sha2 = "0.10"
|
|
hex = "0.4"
|
|
|
|
# IO
|
|
bytes = "1"
|
|
tar = "0.4"
|
|
flate2 = "1"
|
|
walkdir = "2"
|
|
tempfile = "3"
|
|
|
|
# Misc
|
|
bytesize = "2"
|
|
indicatif = "0.17"
|
|
|
|
# Internal crates
|
|
spec-parser = { path = "crates/spec-parser" }
|
|
forge-oci = { path = "crates/forge-oci" }
|
|
forge-engine = { path = "crates/forge-engine" }
|