feat: add hak build pipeline

This commit is contained in:
plenarius
2026-04-20 19:51:05 -04:00
parent 5c840e324b
commit 6d18386473
2 changed files with 37 additions and 0 deletions
+10
View File
@@ -3,6 +3,7 @@ import {
buildModule, buildModule,
hotReloadScripts, hotReloadScripts,
compileSingle, compileSingle,
buildHaks,
} from "../services/build.service.js"; } from "../services/build.service.js";
const router = Router(); const router = Router();
@@ -47,4 +48,13 @@ router.post("/compile-single", async (req, res) => {
} }
}); });
router.post("/haks", async (_req, res) => {
try {
const result = await buildHaks();
res.json(result);
} catch (err: any) {
res.status(500).json({ error: err.message });
}
});
export default router; export default router;
@@ -93,3 +93,30 @@ export async function compileSingle(
return { success: result.success, errors }; return { success: result.success, errors };
} }
export async function buildHaks(): Promise<{
success: boolean;
output: string;
}> {
const workspacePath = getWorkspacePath();
broadcast("build", "start", { type: "haks" });
const result = await runEphemeralContainer({
image: "layonara-builder",
cmd: ["layonara_nwn", "hak", "--yes"],
binds: [
`${workspacePath}/repos/nwn-haks:/build/nwn-haks`,
`${workspacePath}/server/hak:/output/hak`,
`${workspacePath}/server/tlk:/output/tlk`,
],
workingDir: "/build/nwn-haks",
});
const success = result.statusCode === 0;
broadcast("build", success ? "complete" : "failed", {
type: "haks",
exitCode: result.statusCode,
});
return { success, output: result.output };
}