1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- const
- logger = require('./logger'),
- log = logger('app:spawn'),
- warn = logger('app:spawn', 'red'),
- crossSpawn = require('cross-spawn')
- /*
- Returns pid, takes onClose
- */
- module.exports.spawn = function (cmd, params, cwd, onClose) {
- log(`Running "${cmd} ${params.join(' ')}"`)
- log()
- const runner = crossSpawn(
- cmd,
- params, {
- stdio: 'inherit',
- stdout: 'inherit',
- stderr: 'inherit',
- cwd
- }
- )
- runner.on('close', code => {
- log()
- if (code) {
- log(`Command "${cmd}" failed with exit code: ${code}`)
- }
- onClose && onClose(code)
- })
- return runner.pid
- }
- /*
- Returns nothing, takes onFail
- */
- module.exports.spawnSync = function (cmd, params, cwd, onFail) {
- log(`[sync] Running "${cmd} ${params.join(' ')}"`)
- log()
- const runner = crossSpawn.sync(
- cmd,
- params, {
- stdio: 'inherit',
- stdout: 'inherit',
- stderr: 'inherit',
- cwd
- }
- )
- if (runner.status || runner.error) {
- warn()
- warn(`⚠️ Command "${cmd}" failed with exit code: ${runner.status}`)
- if (runner.status === null) {
- warn(`⚠️ Please globally install "${cmd}"`)
- }
- onFail && onFail()
- process.exit(1)
- }
- }
|