Files
UHD_Media_Tool/scripts/compile.ts
T

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");