#![forbid(unsafe_code)]
use std::path::PathBuf;
use crate::evidence::manifest::EvidenceManifest;
#[derive(Debug, Clone, clap::Args)]
pub struct EvidenceManifestArgs {
#[arg(value_name = "OUT")]
pub out: PathBuf,
#[arg(long, default_value = ".")]
pub store: PathBuf,
#[arg(long, default_value = "sync")]
pub io_backend: String,
#[arg(long, default_value = "semaphore")]
pub worker_scheduler: String,
#[arg(long, default_value = "1")]
pub court_schema_version: String,
#[arg(long, default_value = "")]
pub container_image_digest: String,
}
pub fn run(args: &EvidenceManifestArgs) -> Result<(), String> {
let repo_root = PathBuf::from(env!("CARGO_MANIFEST_DIR"));
let m = EvidenceManifest::capture(
&repo_root,
&args.store,
&args.io_backend,
&args.worker_scheduler,
&args.container_image_digest,
&args.court_schema_version,
);
std::fs::write(&args.out, m.to_json())
.map_err(|e| format!("write {}: {e}", args.out.display()))?;
println!("evidence manifest written: {}", args.out.display());
Ok(())
}