import { spawnSync } from "node:child_process"; const packageByModule = { access: "@govoplan/access-webui", admin: "@govoplan/admin-webui", campaigns: "@govoplan/campaign-webui", files: "@govoplan/files-webui", mail: "@govoplan/mail-webui" }; const cases = [ { name: "core-only", modules: [] }, { name: "access-only", modules: ["access"] }, { name: "admin-only", modules: ["admin"] }, { name: "access-with-admin", modules: ["access", "admin"] }, { name: "files-only", modules: ["files"] }, { name: "mail-only", modules: ["mail"] }, { name: "campaign-only", modules: ["campaigns"] }, { name: "campaign-with-files-no-mail", modules: ["campaigns", "files"] }, { name: "campaign-with-mail-no-files", modules: ["campaigns", "mail"] }, { name: "full-product", modules: ["access", "admin", "campaigns", "files", "mail"] } ]; const npmExec = process.env.npm_execpath; const command = npmExec ? process.execPath : (process.platform === "win32" ? "npm.cmd" : "npm"); const baseArgs = npmExec ? [npmExec, "run", "build"] : ["run", "build"]; for (const testCase of cases) { const packages = testCase.modules.map((moduleId) => packageByModule[moduleId]).join(","); console.log(`\n== WebUI module permutation: ${testCase.name} ==`); const result = spawnSync(command, baseArgs, { cwd: new URL("..", import.meta.url), env: { ...process.env, GOVOPLAN_WEBUI_MODULE_PACKAGES: packages }, stdio: "inherit" }); if (result.status !== 0) { process.exit(result.status ?? 1); } }