//@ts-check import { spawnSync, spawn } from 'bun' /** * @param {string} path */ export async function fHook(path) { return await spawnAndWait([ '/usr/bin/bun', 'run', path ]) } /** * @param { [string, ...string[]] } cmd * @param { import('bun').SpawnOptions.OptionsObject } [option] */ export async function spawnAndWait(cmd, option) { console.log('spawning ' + cmd.join(' ')) return spawnSync(cmd, { ...option, env: { PATH: "/bin:/sbin:/usr/bin:/usr/sbin", ...process.env, ...(option?.env || {}) }, stdout: "inherit", stdin: "inherit", stderr: "inherit" }) } /** * @param { string } path * @param { string[] } [args] * @param { import('bun').SpawnOptions.OptionsObject } [options] */ export async function startjs(path, args = [], options = {}) { const SpawnArguments = args.map(arg => {return arg.includes(' ') ? `"${arg}"` : arg}) return spawnAndWait(['/usr/bin/bun', path, ...SpawnArguments ], options) }