Files
openwork/packages/handsfree/bin/openwork-handsfree-computer-use.mjs

42 lines
1.4 KiB
JavaScript
Executable File

#!/usr/bin/env node
import { spawn } from "node:child_process";
import { existsSync } from "node:fs";
import path from "node:path";
import { fileURLToPath } from "node:url";
const __dirname = path.dirname(fileURLToPath(import.meta.url));
const packageRoot = path.resolve(__dirname, "..");
const swiftPackagePath = path.join(packageRoot, "native", "HandsFree");
const explicitBinary = process.env.HANDSFREE_COMPUTER_USE_BINARY?.trim();
const candidates = [
explicitBinary,
path.join(swiftPackagePath, ".build", "release", "HandsFreeComputerUse"),
path.join(swiftPackagePath, ".build", "arm64-apple-macosx", "release", "HandsFreeComputerUse"),
path.join(swiftPackagePath, ".build", "debug", "HandsFreeComputerUse"),
path.join(swiftPackagePath, ".build", "arm64-apple-macosx", "debug", "HandsFreeComputerUse"),
].filter(Boolean);
const args = process.argv.slice(2);
const binary = candidates.find((candidate) => existsSync(candidate));
const command = binary ?? "swift";
const commandArgs = binary
? args
: ["run", "--package-path", swiftPackagePath, "HandsFreeComputerUse", ...args];
const child = spawn(command, commandArgs, {
stdio: "inherit",
env: process.env,
});
child.on("exit", (code, signal) => {
if (signal) process.kill(process.pid, signal);
process.exit(code ?? 0);
});
child.on("error", (error) => {
console.error(`Failed to start HandsFreeComputerUse: ${error.message}`);
process.exit(1);
});