bin/clusterize
#!/usr/bin/env node
'use strict';
/**
* Module dependencies.
*/
var program = require('commander');
var pkg = require('../package.json');
var path = require('path');
var Clusterize = require('../lib/node-clusterize');
var exec = require('child_process').exec;
var log = require('util').log;
var colors = require('colors');
var cluster = require('cluster');
var cpus = require('os').cpus().length;
var fs = require('fs');
// End of Dependencies
var options = {};
/**
* Setup CLI options.
*/
module.exports = program
.version(pkg.version)
.option('list', 'list of running custers')
.option('kill <pid>', 'stop daemon and all it\'s workers')
.option('-a, --app <path>', 'Add path to demonizing app')
.option('-w, --workers <q>', 'Set quantity of workers for your app. Defaut value is cpu.cores*2')
.option('-l, --log <path>', 'Add path to demonizing app')
.parse(process.argv);
/**
* Print list of running daemons
*/
if (program.list) {
return exec('ps aux | grep "clusterize mas" | grep -v grep | awk \'{print $2 " " $11}\'', function (err, stdout) {
if (!stdout) return console.log('nothing'.red);
console.log(stdout.green);
});
}
/**
* kill -9 Daemons by PID.
*/
if (program.kill) {
return exec('kill -9 ' + program.kill, function (err, stdout) {
console.log(err && err.message.red || 'done'.green);
});
}
/**
* Start new daemon.
*/
if (program.app) {
var logfile = program.log && path.resolve(process.cwd(), program.log);
cluster.isMaster && console.log('done'.green);
new Clusterize({
app: path.resolve(process.cwd(), program.app),
workers: program.workers || cpus * 2,
stdout: logfile && fs.openSync(logfile, 'a'),
stderr: logfile && fs.openSync(logfile, 'a')
});
} else {
return module.parent
? null
: program.help();
}