blob: 2c61ce8a0f9e00f582bf0edf0f7f17855ecb695a [file] [edit]
#! /usr/bin/env node
'use strict';
var async = require('async');
var spawn = require('child_process').spawn;
var fs = require('fs');
var path = require('path');
var base = process.cwd();
var dirs = fs.readdirSync(base);
var tasks = [];
dirs.forEach(function(dir) {
var fulldir = path.join(base, dir);
// a plugin contains package.json in root
var pkg = path.join(fulldir, 'package.json');
if (!fs.existsSync(pkg)) return;
var pstat = fs.statSync(pkg);
if (!pstat.isFile()) return;
// a plugin contains index.js in root
var index = path.join(fulldir, 'index.js');
if (!fs.existsSync(index)) return;
var istat = fs.statSync(index);
if (!istat.isFile()) return;
tasks.push(function(cb) {
console.log('\nrunning "npm install" in', fulldir, '...');
var cmd = process.platform === 'win32' ? 'cmd' : 'npm';
var args = process.platform === 'win32' ? ['/c', 'npm', 'install'] : ['install'];
var child = spawn(cmd, args, {
cwd: fulldir,
stdio: 'inherit'
});
child.on('close', function(code) {
console.error(' ->', code === 0 ? 'OK' : 'failed: ' + code);
cb(code);
});
});
});
async.series(tasks, function(err, results) {
if (err) {
console.error('npm install failed: ', err);
} else {
console.error('npm install OK');
}
process.exit(err ? 1 : 0);
});