"use strict";
const { spawnSync } = require("node:child_process");
const { existsSync } = require("node:fs");
function resolveBinary() {
const platform = process.platform; const arch = process.arch; const pkg = `@camunda8/spm-${platform}-${arch}`;
const exe = platform === "win32" ? "spm.exe" : "spm";
try {
const path = require.resolve(`${pkg}/bin/${exe}`);
return existsSync(path) ? path : null;
} catch {
return null;
}
}
function fail(message) {
process.stderr.write(`[spm] ${message}\n`);
process.exit(1);
}
const binary = resolveBinary();
if (!binary) {
fail(
`no prebuilt binary found for ${process.platform}-${process.arch}.\n` +
`The optional dependency @camunda8/spm-${process.platform}-${process.arch} ` +
`is missing or your platform is unsupported.\n` +
`Supported platforms: darwin-x64, darwin-arm64, linux-x64, linux-arm64, win32-x64.\n` +
`Try reinstalling: npm i -g @camunda8/spm`,
);
}
const result = spawnSync(binary, process.argv.slice(2), { stdio: "inherit" });
if (result.error) {
fail(`failed to launch binary: ${result.error.message}`);
}
if (result.signal) {
process.kill(process.pid, result.signal);
}
process.exit(result.status === null ? 1 : result.status);