fix: replace nil context with context.TODO
This commit is contained in:
86
scripts/build-ts.ts
Normal file
86
scripts/build-ts.ts
Normal file
@@ -0,0 +1,86 @@
|
||||
import { copyFile } from "node:fs/promises";
|
||||
|
||||
type BuildStep = {
|
||||
name: string;
|
||||
command: string[];
|
||||
};
|
||||
|
||||
const steps: BuildStep[] = [
|
||||
{
|
||||
name: "player",
|
||||
command: [
|
||||
"bun",
|
||||
"build",
|
||||
"./static/player/main.ts",
|
||||
"--outdir",
|
||||
"./dist/static/player",
|
||||
"--target",
|
||||
"browser",
|
||||
"--splitting",
|
||||
],
|
||||
},
|
||||
];
|
||||
|
||||
const startedAt = performance.now();
|
||||
|
||||
try {
|
||||
const appEntries = Array.from(new Bun.Glob("*.ts").scanSync("./static"))
|
||||
.map((file) => `./static/${file}`)
|
||||
.sort();
|
||||
|
||||
steps.push({
|
||||
name: "app",
|
||||
command: [
|
||||
"bun",
|
||||
"build",
|
||||
...appEntries,
|
||||
"--outdir",
|
||||
"./dist/static",
|
||||
"--target",
|
||||
"browser",
|
||||
"--root",
|
||||
"./static",
|
||||
"--entry-naming",
|
||||
"[name].js",
|
||||
],
|
||||
});
|
||||
|
||||
for (const step of steps) {
|
||||
const result = Bun.spawnSync(step.command, {
|
||||
stdout: "pipe",
|
||||
stderr: "pipe",
|
||||
});
|
||||
|
||||
if (result.exitCode !== 0) {
|
||||
const detail = summarizeFailure(result.stderr, result.stdout);
|
||||
console.error(`ts build failed at ${step.name}${detail === "" ? "" : `: ${detail}`}`);
|
||||
process.exit(result.exitCode);
|
||||
}
|
||||
}
|
||||
|
||||
await copyFile("./node_modules/htmx.org/dist/htmx.min.js", "./dist/static/htmx-lib.js");
|
||||
|
||||
const playerEntries = 1;
|
||||
const totalEntries = playerEntries + appEntries.length;
|
||||
const elapsedMs = Math.round(performance.now() - startedAt);
|
||||
|
||||
console.log(`ts build ok (${totalEntries} entries, ${elapsedMs}ms)`);
|
||||
} catch (error) {
|
||||
const message = error instanceof Error ? error.message : String(error);
|
||||
console.error(`ts build failed: ${message}`);
|
||||
process.exit(1);
|
||||
}
|
||||
|
||||
function summarizeFailure(stderr: Uint8Array, stdout: Uint8Array): string {
|
||||
const combined = `${Buffer.from(stderr).toString("utf8")}${Buffer.from(stdout).toString("utf8")}`.trim();
|
||||
if (combined === "") {
|
||||
return "";
|
||||
}
|
||||
|
||||
const lines = combined
|
||||
.split(/\r?\n/)
|
||||
.map((line) => line.trim())
|
||||
.filter((line) => line !== "");
|
||||
|
||||
return lines.at(-1) ?? "";
|
||||
}
|
||||
Reference in New Issue
Block a user