1 | var nodeSpawn = require('cross-spawn')
|
2 | var Promise = require('pinkie');
|
3 | var assign = require('lodash').assign;
|
4 |
|
5 |
|
6 | module.exports = function (cmd, args, opts) {
|
7 | return new Promise(function (resolve, reject) {
|
8 | opts = opts || {};
|
9 |
|
10 | if (opts.env)
|
11 | opts.env = assign({}, process.env, opts.env);
|
12 |
|
13 | var spawnOpts = assign({
|
14 | stdio: 'inherit',
|
15 | shell: true,
|
16 | }, opts);
|
17 |
|
18 | var childProcess = nodeSpawn(cmd, args, spawnOpts);
|
19 |
|
20 | if (opts.wait !== void 0 && !opts.wait) {
|
21 | resolve();
|
22 | return;
|
23 | }
|
24 |
|
25 | childProcess.on('exit', function (code) {
|
26 | if (code)
|
27 | reject(new Error('Process ' + cmd + ' exited with code: ' + code));
|
28 | else
|
29 | resolve();
|
30 | });
|
31 | });
|
32 | };
|