1
0
Fork 0
mirror of https://github.com/shimataro/ssh-key-action.git synced 2025-06-19 22:52:10 +10:00
ssh-key-action/node_modules/spawn-please/index.js
2019-09-18 20:39:54 +09:00

58 lines
1.3 KiB
JavaScript

var spawn = require('child_process').spawn
function spawnPlease(command, args, stdin, options) {
// if there are only three arguments and the third argument is an object, treat it as the options object and set stdin to null
if(!options && typeof stdin === 'object') {
options = stdin
stdin = undefined
}
// defaults
options = options || {}
if(options.rejectOnError === undefined) {
options.rejectOnError = true
}
var stdout = ''
var stderr = ''
var child = spawn(command, args, options)
if(!spawnPlease.Promise) {
throw new Error('No built-in Promise. You will need to use a Promise library and spawnPlease.Promise = Promise.')
}
return new spawnPlease.Promise(function (resolve, reject) {
if(stdin !== undefined) {
child.stdin.write(stdin)
}
child.stdin.end()
child.stdout.on('data', function (data) {
stdout += data
})
child.stderr.on('data', function (data) {
stderr += data
})
if(options.rejectOnError) {
child.addListener('error', reject)
}
child.on('close', function (code) {
if(code !== 0 && options.rejectOnError) {
reject(stderr)
}
else {
resolve(stdout)
}
})
})
}
spawnPlease.Promise = typeof Promise !== 'undefined' ? Promise : null
module.exports = spawnPlease