element-plus/build/utils/process.ts

24 lines
645 B
TypeScript
Raw Normal View History

2021-09-26 01:29:07 +08:00
import { spawn } from 'child_process'
import { green } from './log'
import { projRoot } from './paths'
export const run = async (command: string, cwd: string = projRoot) =>
new Promise<void>((resolve, reject) => {
const args = command.split(' ')
const cmd = args.shift()!
green(`run: ${cmd} ${args.join(' ')}`)
const app = spawn(cmd, args, {
cwd,
stdio: 'inherit',
})
app.on('close', (code) => {
if (code === 0) resolve()
else
reject(
new Error(`Command failed. \n Command: ${command} \n Code: ${code}`)
)
})
process.on('exit', () => app.kill('SIGHUP'))
})