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 Manifest;
let manifest = parse?;
assert_eq!;
# Ok::