UNPKG

@elora-cloud/elora-cli

Version:
30 lines (27 loc) 972 B
import { spawn } from 'node:child_process'; import process from 'node:process'; import { Chalk } from 'chalk'; import consola from 'consola'; import { ROOT_DIR } from './paths.mjs'; const chalk = new Chalk(); async function run(command, cwd = ROOT_DIR) { return new Promise((resolve, reject) => { const [cmd, ...args] = command.split(' '); consola.info(`run: ${chalk.green(`${cmd} ${args.join(' ')}`)}`); const app = spawn(cmd, args, { cwd, stdio: 'inherit', shell: process.platform === 'win32', }); const onProcessExit = () => app.kill('SIGHUP'); app.on('close', (code) => { process.removeListener('exit', onProcessExit); if (code === 0) resolve(); else reject(new Error(`Command failed. \n Command: ${command} \n Code: ${code}`)); }); process.on('exit', onProcessExit); }); } export { run };