38 lines
1.3 KiB
JavaScript
38 lines
1.3 KiB
JavaScript
import { spawnSync } from "node:child_process";
|
|
|
|
const packageByModule = {
|
|
campaigns: "@govoplan/campaign-webui",
|
|
files: "@govoplan/files-webui",
|
|
mail: "@govoplan/mail-webui"
|
|
};
|
|
|
|
const cases = [
|
|
{ name: "core-only", modules: [] },
|
|
{ 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: ["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);
|
|
}
|
|
}
|