npm/launcher/run.cjs1.4 KB · JavaScript
Raw
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
"use strict";

const path = require("node:path");
const { spawnSync } = require("node:child_process");

const packages = {
  "darwin-arm64": "@superdisk/dumbforge-darwin-arm64",
  "darwin-x64": "@superdisk/dumbforge-darwin-x64",
  "linux-arm64": "@superdisk/dumbforge-linux-arm64",
  "linux-x64": "@superdisk/dumbforge-linux-x64",
  "win32-arm64": "@superdisk/dumbforge-win32-arm64",
  "win32-x64": "@superdisk/dumbforge-win32-x64"
};

module.exports = function run(remoteHelper) {
  const target = `${process.platform}-${process.arch}`;
  const packageName = packages[target];
  if (!packageName) {
    console.error(`dumbforge: unsupported platform ${target}`);
    process.exit(1);
  }

  let packageRoot;
  try {
    packageRoot = path.dirname(require.resolve(`${packageName}/package.json`));
  } catch (error) {
    console.error(
      `dumbforge: the native package ${packageName} is missing. ` +
      "Reinstall without --no-optional."
    );
    process.exit(1);
  }

  const executable = path.join(
    packageRoot,
    "bin",
    process.platform === "win32" ? "dumbforge.exe" : "dumbforge"
  );
  const args = remoteHelper
    ? ["__remote-helper", ...process.argv.slice(2)]
    : process.argv.slice(2);
  const result = spawnSync(executable, args, { stdio: "inherit" });
  if (result.error) {
    console.error(`dumbforge: ${result.error.message}`);
    process.exit(1);
  }
  process.exit(result.status === null ? 1 : result.status);
};