* switch from custom eslint config to standard + prettier * fix new standard eslint violations * add editorconfig file * auto-fix all other violations * update lint yarn script * remove jshint comment
68 lines
1.2 KiB
JavaScript
68 lines
1.2 KiB
JavaScript
module.exports = _spawn;
|
|
|
|
var map = require('through2-map');
|
|
var split = require('split');
|
|
var chalk = require('chalk');
|
|
var spawn = require('child_process').spawn;
|
|
var path = require('path');
|
|
var root = path.resolve(__dirname, '../');
|
|
|
|
function indent(line) {
|
|
line = String(line).trim();
|
|
return line ? ' ' + line + '\n' : '';
|
|
}
|
|
|
|
function consume(stream) {
|
|
stream
|
|
.pipe(split())
|
|
.pipe(map(indent))
|
|
.pipe(
|
|
process.stdout,
|
|
{ end: false }
|
|
);
|
|
}
|
|
|
|
function _spawn(cmd, args, opts, cb) {
|
|
opts = opts || {};
|
|
|
|
if (cmd === 'rm') {
|
|
opts.verbose = false;
|
|
}
|
|
|
|
var conf = {
|
|
stdio: ['ignore', opts.verbose ? 'pipe' : 'ignore', 'pipe'],
|
|
};
|
|
|
|
var subdir;
|
|
|
|
if (opts.cwd) {
|
|
conf.cwd = opts.cwd;
|
|
subdir = path.relative(root, opts.cwd);
|
|
}
|
|
|
|
console.log(
|
|
chalk.white.bold((subdir ? subdir + ' ' : '') + '$ ') +
|
|
cmd +
|
|
' ' +
|
|
args.join(' ')
|
|
);
|
|
|
|
var cp = spawn(cmd, args, conf);
|
|
|
|
if (opts.verbose) {
|
|
consume(cp.stdout);
|
|
}
|
|
|
|
consume(cp.stderr);
|
|
|
|
if (typeof cb === 'function') {
|
|
cp.on('exit', cb);
|
|
}
|
|
|
|
return cp;
|
|
}
|
|
|
|
_spawn.exec = function(cmd, opts, cb) {
|
|
return _spawn('/bin/sh', ['-c', cmd], opts, cb);
|
|
};
|