#!/usr/bin/env node import { execa } from 'execa' import { createRequire } from 'module' const require = createRequire(import.meta.url) /** * Returns the executable path which is located inside `node_modules` * The naming convention is app-${os}-${arch} * If the platform is `win32` or `cygwin`, executable will include a `.exe` extension. * @see https://nodejs.org/api/os.html#osarch * @see https://nodejs.org/api/os.html#osplatform * @example "x/xx/node_modules/app-darwin-arm64" */ function getExePath() { const arch = process.arch let os = process.platform let extension = '' if (['win32', 'cygwin'].includes(process.platform)) { os = 'windows' extension = '.exe' } try { // Since the binary will be located inside `node_modules`, we can simply call `require.resolve` return require.resolve(`homestar-${os}-${arch}/bin/homestar${extension}`) } catch (e) { throw new Error( `Couldn't find application binary inside node_modules for ${os}-${arch}` ) } } /** * Runs the application with args using nodejs spawn */ function run() { const args = process.argv.slice(2) execa(getExePath(), args, { stdio: 'inherit' }) } run()