123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- '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;
|