wdl-modules 0.3.2

Implementation of the WDL module specification
Documentation

Implementation of the WDL module specification.

wdl-modules provides the local, deterministic pieces of WDL module handling: module.json manifest parsing, module-lock.json lockfile parsing, symbolic import paths, deterministic content hashing, Ed25519 module.sig signing and verification, SPDX license validation, and module file-tree checks.

Quickstart

Parse module.json with [Manifest::parse], parse module-lock.json with [Lockfile::parse], and compute a content hash with [hash::hash_directory]. These entry points reject duplicate JSON object keys, invalid relative paths, invalid dependency declarations, and module trees that violate the reserved-filename or Unicode-normalization rules.

Use [project::ModuleProject] to load an exact module.json path or discover the nearest ancestor project. Use [project::ManifestDocument] to edit module.json losslessly while preserving extension fields and validating each change before it lands. Use [project::ModuleProject::write_manifest] to replace module.json through an atomic rename and [project::LockedLockfile] to read or rewrite the sibling module-lock.json under its own advisory lock, and use resolver::TrustStore to accept lockfile signers in a user-level trust store outside the project tree.

use wdl_modules::Manifest;

let manifest = Manifest::parse(
    br#"{
        "name": "spellbook",
        "license": "MIT"
    }"#,
)?;

assert_eq!(manifest.name, "spellbook");
# Ok::<(), Box<dyn std::error::Error>>(())