diff --git a/internal/content/ipc/send.ts b/internal/content/ipc/send.ts new file mode 100644 index 0000000..b796b00 --- /dev/null +++ b/internal/content/ipc/send.ts @@ -0,0 +1,3 @@ +export const ipcSend = ( + msg: { type: "init" } | { type: "ready"; port: number } +) => {}; diff --git a/internal/server/server.ts b/internal/server/server.ts index 4b54844..b090de1 100644 --- a/internal/server/server.ts +++ b/internal/server/server.ts @@ -3,6 +3,7 @@ import { g, startup } from "utils/global"; import { prasi_content_ipc } from "../content/content-ipc"; import { prasi_content_deploy } from "../content/content-deploy"; import { loadCurrentDeploy } from "../content/deploy/load"; +import { ipcSend } from "../content/ipc/send"; startup("site", async () => { await config.init("site:site.json"); @@ -10,19 +11,27 @@ startup("site", async () => { g.content = g.ipc ? prasi_content_ipc : prasi_content_deploy; if (g.ipc) { + ipcSend({ type: "init" }); + process.on("message", (msg: { type: "start" }) => { + if (g.mode === "site") { + if (msg.type === "start") { + g.server = Bun.serve({ + fetch(request, server) {}, + websocket: { message(ws, message) {} }, + }); + } + } + }); } else { const ts = config.current?.deploy.current; if (ts) { await loadCurrentDeploy(ts); } - } - g.server = Bun.serve({ - fetch(request, server) {}, - websocket: { message(ws, message) {} }, - }); - - if (g.ipc) { + g.server = Bun.serve({ + fetch(request, server) {}, + websocket: { message(ws, message) {} }, + }); } } }); diff --git a/internal/server/start.ts b/internal/server/start.ts index 3b482f0..e4c7b34 100644 --- a/internal/server/start.ts +++ b/internal/server/start.ts @@ -2,7 +2,7 @@ import { fs } from "utils/fs"; import { g } from "utils/global"; import { spawn } from "utils/spawn"; -export const startServer = (arg: { site_id: string; mode: "dev" | "prod" }) => { +export const startServer = (arg: { mode: "dev" | "prod" }) => { if (g.mode === "supervisor") { g.supervisor = { process: spawn({ diff --git a/internal/supervisor.ts b/internal/supervisor.ts index 1314d42..6bca10c 100644 --- a/internal/supervisor.ts +++ b/internal/supervisor.ts @@ -14,29 +14,24 @@ startup("supervisor", async () => { console.log(`${c.green}Prasi Server:${c.esc} ${fs.path("site:")}`); await config.init("site:site.json"); - const site_id = config.get("site_id") as string; - if (!site_id) { - siteLog("No Site Loaded"); - } else { - siteLog(`Site ID: ${site_id}`); + if (!is_ipc) { + const site_id = config.get("site_id") as string; + await prasi_content_deploy.prepare(site_id); - if (!is_ipc) { - await prasi_content_deploy.prepare(site_id); - } - - await ensureServerReady(is_dev); - await ensureDBReady(); - - if (is_ipc) { - g.mode = "site"; - if (g.mode === "site") g.ipc = true; + if (!site_id) { + siteLog("No Site Loaded"); } else { - + siteLog(`Site ID: ${site_id}`); } - - startServer({ - site_id, - mode: is_dev ? "dev" : "prod", - }); + await ensureDBReady(); + } else { + g.mode = "site"; + if (g.mode === "site") g.ipc = true; } + + await ensureServerReady(is_dev); + + startServer({ + mode: is_dev ? "dev" : "prod", + }); });