1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- 'use strict';
- var cp = require('child_process');
- var parse = require('./lib/parse');
- var enoent = require('./lib/enoent');
- var cpSpawnSync = cp.spawnSync;
- function spawn(command, args, options) {
- var parsed;
- var spawned;
- // Parse the arguments
- parsed = parse(command, args, options);
- // Spawn the child process
- spawned = cp.spawn(parsed.command, parsed.args, parsed.options);
- // Hook into child process "exit" event to emit an error if the command
- // does not exists, see: https://github.com/IndigoUnited/node-cross-spawn/issues/16
- enoent.hookChildProcess(spawned, parsed);
- return spawned;
- }
- function spawnSync(command, args, options) {
- var parsed;
- var result;
- if (!cpSpawnSync) {
- try {
- cpSpawnSync = require('spawn-sync'); // eslint-disable-line global-require
- } catch (ex) {
- throw new Error(
- 'In order to use spawnSync on node 0.10 or older, you must ' +
- 'install spawn-sync:\n\n' +
- ' npm install spawn-sync --save'
- );
- }
- }
- // Parse the arguments
- parsed = parse(command, args, options);
- // Spawn the child process
- result = cpSpawnSync(parsed.command, parsed.args, parsed.options);
- // Analyze if the command does not exists, see: https://github.com/IndigoUnited/node-cross-spawn/issues/16
- result.error = result.error || enoent.verifyENOENTSync(result.status, parsed);
- return result;
- }
- module.exports = spawn;
- module.exports.spawn = spawn;
- module.exports.sync = spawnSync;
- module.exports._parse = parse;
- module.exports._enoent = enoent;
|