feat: add hak build pipeline
This commit is contained in:
@@ -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 };
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user