Expand description
assay install — fetch + verify + extract the binaries and Lua libraries
declared in a Manifest.lua.
See .claude/plans/21-libs-folder-and-install.md.
§Pipeline
- Read
Manifest.lua, parse in a sandboxed mlua VM (manifest). - Resolve dirs (cache / bin / lib) from CLI flags + per-user XDG
fallbacks (root falls back to
/var/cache/assay,/usr/local/bin,/opt/assay/libs). - Build a
fetch::FetchPlanper declared dep. - With
--dry-run: print the resolved plan and exit. - Otherwise: fetch all deps in parallel via
tokio::spawn(cache hits skip HTTP; sha256 verified for every artifact). - Extract sequentially: extension binaries via
extract::install_extension_binary; lib trees viaextract::install_lib_tree. - Write
Manifest.locknext to the input manifest.
Failures abort early. Cached entries from successful fetches are preserved; bin / lib trees from earlier extractions are NOT rolled back (matching plan 21’s design, finalised treatment in phase 5).
Modules§
- extract
- Extract
.tar.gzartifacts from the cache into the destination filesystem paths. - fetch
- Fetch + cache + sha256-verify for declared deps.
- lock
Manifest.lockwriter.- manifest
Manifest.luaparser. Reads a Lua return-table declaring extension binaries + Lua libraries to install.