47 lines
1.2 KiB
JavaScript
47 lines
1.2 KiB
JavaScript
#!/usr/bin/env node
|
|
|
|
import { spawnSync } from "node:child_process";
|
|
import fs from "node:fs";
|
|
import path from "node:path";
|
|
import { fileURLToPath } from "node:url";
|
|
|
|
const scriptDir = path.dirname(fileURLToPath(import.meta.url));
|
|
const rootDir = path.resolve(scriptDir, "..");
|
|
const tscCliPath = path.join(rootDir, "node_modules", "typescript", "bin", "tsc");
|
|
|
|
const buildTargets = [
|
|
{
|
|
name: "@paperclipai/shared",
|
|
output: path.join(rootDir, "packages/shared/dist/index.js"),
|
|
tsconfig: path.join(rootDir, "packages/shared/tsconfig.json"),
|
|
},
|
|
{
|
|
name: "@paperclipai/plugin-sdk",
|
|
output: path.join(rootDir, "packages/plugins/sdk/dist/index.js"),
|
|
tsconfig: path.join(rootDir, "packages/plugins/sdk/tsconfig.json"),
|
|
},
|
|
];
|
|
|
|
if (!fs.existsSync(tscCliPath)) {
|
|
throw new Error(`TypeScript CLI not found at ${tscCliPath}`);
|
|
}
|
|
|
|
for (const target of buildTargets) {
|
|
if (fs.existsSync(target.output)) {
|
|
continue;
|
|
}
|
|
|
|
const result = spawnSync(process.execPath, [tscCliPath, "-p", target.tsconfig], {
|
|
cwd: rootDir,
|
|
stdio: "inherit",
|
|
});
|
|
|
|
if (result.error) {
|
|
throw result.error;
|
|
}
|
|
|
|
if (result.status !== 0) {
|
|
process.exit(result.status ?? 1);
|
|
}
|
|
}
|