guests/verify-bundle/examples/dist.rs
// SPDX-License-Identifier: AGPL-3.0-only
//! `cargo run --release --locked --example dist -- <out-dir> [<target-root>]`:
//! build the three release components of the verify-bundle guest
//! (`heimdall-verify-bundle.wasm`, `-verifier.wasm`, `-decoder.wasm`) and each
//! one's `.wasm.blake3` into `<out-dir>`. Reproducible: the same sources, lock
//! and toolchain image give the same bytes, from any checkout path, any
//! CARGO_HOME (vendored or not) and any target directory
//! (tests/release_dist.rs). Heimdall is a defensive sandbox.
#[path = "../tools/release.rs"]
mod release;
use std::path::PathBuf;
use std::process::ExitCode;
fn main() -> ExitCode {
let args: Vec<String> = std::env::args().skip(1).collect();
if args.is_empty() || args.len() > 2 || args[0].starts_with('-') {
eprintln!("usage: dist <out-dir> [<target-root>]");
return ExitCode::from(2);
}
let out = PathBuf::from(&args[0]);
let target_root = args
.get(1)
.map(PathBuf::from)
.unwrap_or_else(|| PathBuf::from(env!("CARGO_MANIFEST_DIR")).join("target/dist-build"));
match release::dist(&out, &target_root) {
Ok(done) => {
for a in done {
println!(
"{} size {} blake3 {} sha256 {}",
a.path.display(),
a.size,
a.blake3,
a.sha256
);
}
ExitCode::SUCCESS
}
Err(e) => {
eprintln!("dist: {e}");
ExitCode::FAILURE
}
}
}