45 lines
1.2 KiB
JavaScript
45 lines
1.2 KiB
JavaScript
|
var util = require('./util');
|
||
|
var Q = require('q');
|
||
|
var spawn = require('child_process').spawn;
|
||
|
var readline = require('readline');
|
||
|
|
||
|
module.exports = function(gulp, plugins, config) {
|
||
|
return function() {
|
||
|
return isInstalled().then(function(installed) {
|
||
|
if (!installed) {
|
||
|
return util.processToPromise(spawn(config.pub,
|
||
|
['global', 'activate', config.packageName, '--no-executables'], {
|
||
|
stdio: 'inherit'
|
||
|
}));
|
||
|
}
|
||
|
}).then(function() {
|
||
|
return util.processToPromise(spawn(config.pub, ['global', 'run'].concat(config.args), {
|
||
|
stdio: 'inherit'
|
||
|
}));
|
||
|
});
|
||
|
};
|
||
|
|
||
|
function isInstalled() {
|
||
|
var subProcess = spawn(config.pub, ['global', 'list'], {
|
||
|
// inherit stdin and stderr, but filter stdout
|
||
|
stdio: [process.stdin, 'pipe', process.stderr]
|
||
|
});
|
||
|
var rl = readline.createInterface({
|
||
|
input: subProcess.stdout,
|
||
|
output: process.stdout,
|
||
|
terminal: false
|
||
|
});
|
||
|
var found = false;
|
||
|
rl.on('line', function(line) {
|
||
|
if (line.indexOf(config.packageName) !== -1) {
|
||
|
found = true;
|
||
|
}
|
||
|
console.log(line);
|
||
|
});
|
||
|
return util.processToPromise(subProcess).then( function() {
|
||
|
return found;
|
||
|
});
|
||
|
}
|
||
|
|
||
|
};
|