the reminder not showing content on the card at dashboard view and the quizes are hardcoded must move to the db make api's for it
75 lines
1.9 KiB
JavaScript
75 lines
1.9 KiB
JavaScript
const path = require('path');
|
|
const utils = require('./utils');
|
|
const merge = utils.merge;
|
|
const bus = utils.bus;
|
|
const spawn = require('child_process').spawn;
|
|
|
|
module.exports = function spawnCommand(command, config, eventArgs) {
|
|
var stdio = ['pipe', 'pipe', 'pipe'];
|
|
|
|
if (config.options.stdout) {
|
|
stdio = ['pipe', process.stdout, process.stderr];
|
|
}
|
|
|
|
const env = merge(process.env, { FILENAME: eventArgs[0] });
|
|
|
|
var sh = 'sh';
|
|
var shFlag = '-c';
|
|
var spawnOptions = {
|
|
env: merge(config.options.execOptions.env, env),
|
|
stdio: stdio,
|
|
};
|
|
|
|
if (!Array.isArray(command)) {
|
|
command = [command];
|
|
}
|
|
|
|
if (utils.isWindows) {
|
|
// if the exec includes a forward slash, reverse it for windows compat
|
|
// but *only* apply to the first command, and none of the arguments.
|
|
// ref #1251 and #1236
|
|
command = command.map(executable => {
|
|
if (executable.indexOf('/') === -1) {
|
|
return executable;
|
|
}
|
|
|
|
return executable.split(' ').map((e, i) => {
|
|
if (i === 0) {
|
|
return path.normalize(e);
|
|
}
|
|
return e;
|
|
}).join(' ');
|
|
});
|
|
// taken from npm's cli: https://git.io/vNFD4
|
|
sh = process.env.comspec || 'cmd';
|
|
shFlag = '/d /s /c';
|
|
spawnOptions.windowsVerbatimArguments = true;
|
|
spawnOptions.windowsHide = true;
|
|
}
|
|
|
|
const args = command.join(' ');
|
|
const child = spawn(sh, [shFlag, args], spawnOptions);
|
|
|
|
if (config.required) {
|
|
var emit = {
|
|
stdout: function (data) {
|
|
bus.emit('stdout', data);
|
|
},
|
|
stderr: function (data) {
|
|
bus.emit('stderr', data);
|
|
},
|
|
};
|
|
|
|
// now work out what to bind to...
|
|
if (config.options.stdout) {
|
|
child.on('stdout', emit.stdout).on('stderr', emit.stderr);
|
|
} else {
|
|
child.stdout.on('data', emit.stdout);
|
|
child.stderr.on('data', emit.stderr);
|
|
|
|
bus.stdout = child.stdout;
|
|
bus.stderr = child.stderr;
|
|
}
|
|
}
|
|
};
|