Add ecr::rootfs with the full rootfs lifecycle behind the library: - RootfsCache::prepare resolves an image reference, downloads through the tarball cache (with the OCI :latest digest freshness check) and extracts into a scratch directory tracked by PreparedRootfs. - PreparedRootfs::persist packs the current rootfs back into its cache entry (compressed to match the entry's extension, symlinks and permissions preserved) and marks it with a .provisioned sidecar. - RootfsCache::prepare_provisioned composes both into the hot-cell flow: provision once, and every later call sharing the cache skips the download and the provisioning step. extract: an "oci-" cache entry without a layers.manifest is a persisted provisioned rootfs; extract it as a plain archive. The CLI now drives prepare and drops its inline cache/orchestration code and the dirs/tempfile dependencies. The binfmt check moves ahead of the download so foreign-arch runs fail before pulling an image.
24 lines
550 B
TOML
24 lines
550 B
TOML
[package]
|
|
name = "ecr-cli"
|
|
description = "Enter chroot environments with Linux namespaces"
|
|
version.workspace = true
|
|
edition.workspace = true
|
|
rust-version.workspace = true
|
|
license.workspace = true
|
|
authors.workspace = true
|
|
|
|
# The installed binary keeps the `ecr` name even though the CLI package is
|
|
# `ecr-cli`; the library package owns the `ecr` name for consumers.
|
|
[[bin]]
|
|
name = "ecr"
|
|
path = "src/main.rs"
|
|
|
|
[dependencies]
|
|
ecr = { path = "../ecr" }
|
|
|
|
# CLI parsing
|
|
clap = { version = "4", features = ["derive", "env"] }
|
|
|
|
# Error handling
|
|
anyhow = "1"
|