import { rmSync, mkdirSync } from "node:fs"; import { dirname, join, resolve } from "node:path"; import { fileURLToPath } from "node:url"; import { spawnSync } from "node:child_process"; const scriptsDir = dirname(fileURLToPath(import.meta.url)); const frontendRoot = resolve(scriptsDir, ".."); const repoRoot = resolve(frontendRoot, ".."); const backendRoot = join(repoRoot, "backend"); const outDir = join(frontendRoot, "daemon"); const outPath = join(outDir, process.platform === "win32" ? "ao.exe" : "ao"); rmSync(outDir, { recursive: true, force: true }); mkdirSync(outDir, { recursive: true }); const result = spawnSync("go", ["build", "-o", outPath, "./cmd/ao"], { cwd: backendRoot, stdio: "inherit", }); if (result.error) { console.error(`failed to start go build: ${result.error.message}`); process.exit(1); } if (result.status !== 0) { process.exit(result.status ?? 1); }