Your browser sucks, JavaScript disabled! Gunnar's console needs JavaScript and WebAssembly. Git over SSH on port 2222 does not.

nordisk/heimdall

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
        }
    }
}