Skip to content

Instantly share code, notes, and snippets.

@pacarvalho
Last active April 17, 2022 15:03
Show Gist options
  • Save pacarvalho/62c0b6ad2b90479917ce3dae2f126af2 to your computer and use it in GitHub Desktop.
Save pacarvalho/62c0b6ad2b90479917ce3dae2f126af2 to your computer and use it in GitHub Desktop.
Spawn Promise Wrapped Child Process in NodeJS for AWS Lambda
const childProcess = require('child_process'),
spawnPromise = function (command, argsarray, envOptions) {
return new Promise((resolve, reject) => {
console.log('executing', command, argsarray.join(' '));
const childProc = childProcess.spawn(command, argsarray, envOptions || {env: process.env, cwd: process.cwd()})
const resultBuffers = [];
childProc.stdout.on('data', buffer => {
console.log(buffer.toString());
resultBuffers.push(buffer);
});
childProc.stderr.on('data', buffer => console.error(buffer.toString()));
childProc.on('exit', (code, signal) => {
console.log(`${command} completed with ${code}:${signal}`);
if (code || signal) {
reject(`${command} failed with ${code || signal}`);
} else {
resolve(Buffer.concat(resultBuffers).toString().trim());
}
});
});
};
module.exports = {
spawn: spawnPromise
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment