benji.monster/node_modules/shell-exec/index.js
2020-01-03 21:48:09 +01:00

47 lines
962 B
JavaScript

'use strict'
const childProcess = require('child_process')
function shellExec (cmd = '', opts = {}) {
if (Array.isArray(cmd)) {
cmd = cmd.join(';')
}
opts = Object.assign({ stdio: 'pipe', cwd: process.cwd() }, opts)
let child
const shell = process.platform === 'win32' ? { cmd: 'cmd', arg: '/C' } : { cmd: 'sh', arg: '-c' }
try {
child = childProcess.spawn(shell.cmd, [shell.arg, cmd], opts)
} catch (error) {
return Promise.reject(error)
}
return new Promise(resolve => {
let stdout = ''
let stderr = ''
if (child.stdout) {
child.stdout.on('data', data => {
stdout += data
})
}
if (child.stderr) {
child.stderr.on('data', data => {
stderr += data
})
}
child.on('error', error => {
resolve({ error, stdout, stderr, cmd })
})
child.on('close', code => {
resolve({ stdout, stderr, cmd, code })
})
})
}
module.exports = shellExec