Disable the confirmation dialog when deleting files in the VS Code explorer to streamline the development workflow and reduce friction during file management operations.
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;
|
|
}
|
|
}
|
|
};
|