diff options
| author | 8cy <[email protected]> | 2020-04-03 02:37:42 -0700 |
|---|---|---|
| committer | 8cy <[email protected]> | 2020-04-03 02:37:42 -0700 |
| commit | 60867fb030bae582082340ead7dbc7efdc2f5398 (patch) | |
| tree | 4c6a7356351be2e4914e15c4703172597c45656e /node_modules/spawn-sync/lib/worker.js | |
| parent | commenting (diff) | |
| download | s5nical-60867fb030bae582082340ead7dbc7efdc2f5398.tar.xz s5nical-60867fb030bae582082340ead7dbc7efdc2f5398.zip | |
2020/04/03, 02:34, v1.2.0
Diffstat (limited to 'node_modules/spawn-sync/lib/worker.js')
| -rw-r--r-- | node_modules/spawn-sync/lib/worker.js | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/node_modules/spawn-sync/lib/worker.js b/node_modules/spawn-sync/lib/worker.js new file mode 100644 index 0000000..3e050ac --- /dev/null +++ b/node_modules/spawn-sync/lib/worker.js @@ -0,0 +1,56 @@ +'use strict'; + +var cp = require('child_process'); +var fs = require('fs'); +var concat = require('concat-stream'); +var JSON = require('./json-buffer'); + +var inputFile = process.argv[2]; +var outputFile = process.argv[3]; + +var args = JSON.parse(fs.readFileSync(inputFile, 'utf8')); +function output(result) { + fs.writeFileSync(outputFile, JSON.stringify(result)); +} + +var child = cp.spawn.apply(cp, args); +var options = (args[2] && typeof args[2] === 'object') ? + args[2] : + (args[1] && typeof args[1] === 'object' && !Array.isArray(args[1])) ? + args[1] : + {}; + +var complete = false; +var stdout, stderr; +child.stdout && child.stdout.pipe(concat(function (buf) { + stdout = buf.length ? buf : new Buffer(0); +})); +child.stderr && child.stderr.pipe(concat(function (buf) { + stderr = buf.length ? buf : new Buffer(0); +})); +child.on('error', function (err) { + output({pid: child.pid, error: err.message}); +}); +child.on('close', function (status, signal) { + if (options.encoding && options.encoding !== 'buffer') { + stdout = stdout.toString(options.encoding); + stderr = stderr.toString(options.encoding); + } + output({ + pid: child.pid, + output: [null, stdout, stderr], + stdout: stdout, + stderr: stderr, + status: status, + signal: signal + }); +}); + +if (options.timeout && typeof options.timeout === 'number') { + setTimeout(function () { + child.kill(options.killSignal || 'SIGTERM'); + }, options.timeout); +} +if (options.input && (typeof options.input === 'string' || Buffer.isBuffer(options.input))) { + child.stdin.end(options.input); +} |