refactor: migrate v02 cloud api to TypeScript
This commit is contained in:
@@ -0,0 +1,73 @@
|
||||
#!/usr/bin/env node
|
||||
import { spawn } from "node:child_process";
|
||||
import { existsSync } from "node:fs";
|
||||
import os from "node:os";
|
||||
import path from "node:path";
|
||||
|
||||
const args = process.argv.slice(2);
|
||||
|
||||
if (args.length === 0 || args.includes("--help") || args.includes("-h")) {
|
||||
process.stdout.write(JSON.stringify({
|
||||
script: "run-bun",
|
||||
usage: "node scripts/run-bun.mjs <bun-args...>",
|
||||
env: "HWLAB_BUN_COMMAND",
|
||||
resolvedCommand: resolveBunCommand()
|
||||
}, null, 2) + "\n");
|
||||
process.exit(0);
|
||||
}
|
||||
|
||||
const command = resolveBunCommand();
|
||||
if (!command) {
|
||||
process.stderr.write(JSON.stringify({
|
||||
script: "run-bun",
|
||||
status: "failed",
|
||||
error: "bun_command_not_found",
|
||||
checked: bunCandidates()
|
||||
}, null, 2) + "\n");
|
||||
process.exit(127);
|
||||
}
|
||||
|
||||
const child = spawn(command, args, {
|
||||
cwd: process.cwd(),
|
||||
env: process.env,
|
||||
stdio: "inherit"
|
||||
});
|
||||
|
||||
child.on("error", (error) => {
|
||||
process.stderr.write(JSON.stringify({
|
||||
script: "run-bun",
|
||||
status: "failed",
|
||||
error: "bun_spawn_failed",
|
||||
command,
|
||||
reason: error.message
|
||||
}, null, 2) + "\n");
|
||||
process.exit(127);
|
||||
});
|
||||
|
||||
child.on("exit", (code, signal) => {
|
||||
if (signal) {
|
||||
process.kill(process.pid, signal);
|
||||
return;
|
||||
}
|
||||
process.exit(code ?? 0);
|
||||
});
|
||||
|
||||
function resolveBunCommand() {
|
||||
for (const candidate of bunCandidates()) {
|
||||
if (!candidate) continue;
|
||||
if (!candidate.includes(path.sep)) return candidate;
|
||||
if (existsSync(candidate)) return candidate;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
function bunCandidates() {
|
||||
return [
|
||||
process.env.HWLAB_BUN_COMMAND,
|
||||
path.join(process.cwd(), "node_modules", ".bin", process.platform === "win32" ? "bun.exe" : "bun"),
|
||||
path.join(os.homedir(), ".bun", "bin", process.platform === "win32" ? "bun.exe" : "bun"),
|
||||
"/root/.bun/bin/bun",
|
||||
"/usr/local/bin/bun",
|
||||
"bun"
|
||||
].filter(Boolean);
|
||||
}
|
||||
Reference in New Issue
Block a user