From 8ffcb3efd50beaf1305a4f58f22cfaf46e25576c Mon Sep 17 00:00:00 2001 From: baladithyab Date: Wed, 27 May 2026 22:27:33 -0700 Subject: [PATCH] feat(schema): add build.tools[] for named build-tool environments Pairs with web-embed-workflows#6 which adds the workflow plumbing. Currently the only valid value is 'emsdk', which the workflow wires to mymindstorm/setup-emsdk@v14 with caching. Other tools (pyodide-build, cargo-wasi, etc.) can be added by extending the enum + a new gated step in the workflow. --- src/lib/types/project-manifest.ts | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/lib/types/project-manifest.ts b/src/lib/types/project-manifest.ts index dfdb14f..95698c2 100644 --- a/src/lib/types/project-manifest.ts +++ b/src/lib/types/project-manifest.ts @@ -110,6 +110,12 @@ export type Delivery = z.infer * source → upload-ready artifacts (e.g. compile WASM, optimize media, * convert notebooks to HTML, run TypeScript build). * + * Optional `aptPackages`: declarative apt-get install before the script. + * + * Optional `tools[]`: named build-tool environments to set up before + * the script. Currently supported: + * - 'emsdk' → mymindstorm/setup-emsdk@v14 with caching + * * The script runs in the repo root with the standard Actions ubuntu-24 * runner. Anything in `apt-get install` from a prior step is available; * common tools (ffmpeg, jq, python3, node, bun, rustc) are pre-installed. @@ -124,6 +130,8 @@ export const Build = z.object({ script: z.string().optional(), /** Optional list of apt packages to install before running the script. */ aptPackages: z.array(z.string()).optional(), + /** Optional list of named build-tool environments (e.g. ['emsdk']). */ + tools: z.array(z.enum(['emsdk'])).optional(), }) export type Build = z.infer