diff options
author | zero1five <zerodengyin@gmail.com> | 2019-05-12 20:02:31 +0800 |
---|---|---|
committer | Daniel Bevenius <daniel.bevenius@gmail.com> | 2019-05-16 05:14:10 +0200 |
commit | 9f99d4e252c58d445738c00dc9e04e8b375086d5 (patch) | |
tree | 7dd58fd04937631d69784f020c85d80e6f5cba26 | |
parent | 03d43539f93be2c401f57d7eac87a5ae933ef905 (diff) | |
download | android-node-v8-9f99d4e252c58d445738c00dc9e04e8b375086d5.tar.gz android-node-v8-9f99d4e252c58d445738c00dc9e04e8b375086d5.tar.bz2 android-node-v8-9f99d4e252c58d445738c00dc9e04e8b375086d5.zip |
child_process: refactor stdioStringToArray function
reduce the function in both files to one.
PR-URL: https://github.com/nodejs/node/pull/27657
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Ruben Bridgewater <ruben@bridgewater.de>
Reviewed-By: Rich Trott <rtrott@gmail.com>
-rw-r--r-- | lib/child_process.js | 22 | ||||
-rw-r--r-- | lib/internal/child_process.js | 24 |
2 files changed, 23 insertions, 23 deletions
diff --git a/lib/child_process.js b/lib/child_process.js index 64ab321f29..26965aa6b9 100644 --- a/lib/child_process.js +++ b/lib/child_process.js @@ -37,7 +37,6 @@ const { ERR_CHILD_PROCESS_IPC_REQUIRED, ERR_CHILD_PROCESS_STDIO_MAXBUFFER, ERR_INVALID_ARG_TYPE, - ERR_INVALID_OPT_VALUE, ERR_OUT_OF_RANGE } = require('internal/errors').codes; const { clearTimeout, setTimeout } = require('timers'); @@ -46,24 +45,14 @@ const child_process = require('internal/child_process'); const { getValidStdio, setupChannel, - ChildProcess + ChildProcess, + stdioStringToArray } = child_process; const MAX_BUFFER = 1024 * 1024; exports.ChildProcess = ChildProcess; -function stdioStringToArray(option) { - switch (option) { - case 'ignore': - case 'pipe': - case 'inherit': - return [option, option, option, 'ipc']; - default: - throw new ERR_INVALID_OPT_VALUE('stdio', option); - } -} - exports.fork = function fork(modulePath /* , args, options */) { validateString(modulePath, 'modulePath'); @@ -104,12 +93,13 @@ exports.fork = function fork(modulePath /* , args, options */) { args = execArgv.concat([modulePath], args); if (typeof options.stdio === 'string') { - options.stdio = stdioStringToArray(options.stdio); + options.stdio = stdioStringToArray(options.stdio, 'ipc'); } else if (!Array.isArray(options.stdio)) { // Use a separate fd=3 for the IPC channel. Inherit stdin, stdout, // and stderr from the parent if silent isn't set. - options.stdio = options.silent ? stdioStringToArray('pipe') : - stdioStringToArray('inherit'); + options.stdio = stdioStringToArray( + options.silent ? 'pipe' : 'inherit', + 'ipc'); } else if (!options.stdio.includes('ipc')) { throw new ERR_CHILD_PROCESS_IPC_REQUIRED('options.stdio'); } diff --git a/lib/internal/child_process.js b/lib/internal/child_process.js index 2f081d9111..4e6a25a8a3 100644 --- a/lib/internal/child_process.js +++ b/lib/internal/child_process.js @@ -214,6 +214,21 @@ const handleConversion = { } }; +function stdioStringToArray(stdio, channel) { + const options = []; + + switch (stdio) { + case 'ignore': + case 'pipe': options.push(stdio, stdio, stdio); break; + case 'inherit': options.push(0, 1, 2); break; + default: + throw new ERR_INVALID_OPT_VALUE('stdio', stdio); + } + + if (channel) options.push(channel); + + return options; +} function ChildProcess() { EventEmitter.call(this); @@ -892,13 +907,7 @@ function getValidStdio(stdio, sync) { // Replace shortcut with an array if (typeof stdio === 'string') { - switch (stdio) { - case 'ignore': stdio = ['ignore', 'ignore', 'ignore']; break; - case 'pipe': stdio = ['pipe', 'pipe', 'pipe']; break; - case 'inherit': stdio = [0, 1, 2]; break; - default: - throw new ERR_INVALID_OPT_VALUE('stdio', stdio); - } + stdio = stdioStringToArray(stdio); } else if (!Array.isArray(stdio)) { throw new ERR_INVALID_OPT_VALUE('stdio', inspect(stdio)); } @@ -1042,5 +1051,6 @@ module.exports = { ChildProcess, setupChannel, getValidStdio, + stdioStringToArray, spawnSync }; |