45 lines
1.8 KiB
TypeScript
45 lines
1.8 KiB
TypeScript
import { cp, mkdir, readdir, readFile } from "node:fs/promises";
|
|
import { resolve } from "node:path";
|
|
import { fileURLToPath } from "node:url";
|
|
|
|
const root = fileURLToPath(new URL("..", import.meta.url));
|
|
process.chdir(root);
|
|
const native = Bun.spawnSync(["sh", "scripts/build-sandbox.sh"], { stdout: "inherit", stderr: "inherit" });
|
|
if (native.exitCode !== 0) process.exit(native.exitCode);
|
|
await mkdir("dist", { recursive: true });
|
|
const migrations = (await readdir("packages/db/migrations")).filter((name) => name.endsWith(".ts")).sort();
|
|
const result = await Bun.build({
|
|
entrypoints: ["apps/server/src/main.ts"],
|
|
compile: { outfile: "dist/umt-server", autoloadDotenv: false, autoloadBunfig: false },
|
|
target: "bun",
|
|
plugins: [
|
|
{
|
|
name: "embedded-migrations",
|
|
setup(build) {
|
|
build.onLoad({ filter: /packages\/db\/src\/migrator\.ts$/ }, async ({ path }) => {
|
|
const source = await readFile(path, "utf8");
|
|
const imports = migrations
|
|
.map(
|
|
(name, i) =>
|
|
`import * as migration${i} from ${JSON.stringify(resolve(root, "packages/db/migrations", name))};`,
|
|
)
|
|
.join("\n");
|
|
const entries = migrations
|
|
.map((name, i) => `${JSON.stringify(name.slice(0, -3))}: migration${i}`)
|
|
.join(",\n");
|
|
return {
|
|
contents: `${imports}\n${source.replace("new FileMigrationProvider({ fs, path, migrationFolder: MIGRATIONS_DIR })", `{ getMigrations: async () => ({${entries}}) }`)}`,
|
|
loader: "ts",
|
|
};
|
|
});
|
|
},
|
|
},
|
|
],
|
|
});
|
|
if (!result.success) {
|
|
for (const log of result.logs) console.error(log);
|
|
process.exit(1);
|
|
}
|
|
await cp("packages/agent/skills", "dist/skills", { recursive: true, force: true });
|
|
console.log("Built dist/umt-server, dist/sandbox-policy.node and dist/skills");
|