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;
 | |
|     });
 | |
|   }
 | |
| 
 | |
| };
 |