the-shepherd
Version:
Control a herd of wild processes.
90 lines (75 loc) • 2.08 kB
JavaScript
// Generated by CoffeeScript 1.8.0
(function() {
var $, Fs, Helpers, Herd, Opts, Server, Worker, d, die, err, log, outStr, _ref,
__slice = [].slice;
Opts = require('./opts');
if (Opts.daemon) {
require('daemon')({
stdout: process.stdout,
stderr: process.stderr
});
}
$ = require("bling");
Fs = require("fs");
log = $.logger("[shepherd]");
die = function() {
var a;
a = 1 <= arguments.length ? __slice.call(arguments, 0) : [];
log.apply(null, a);
return process.exit(1);
};
if (Opts.O === "-") {
try {
outStr = process.stdout;
} catch (_error) {
err = _error;
die("Failed to open stdout:", err.stack);
}
} else {
try {
outStr = Fs.createWriteStream(Opts.O, {
flags: 'a',
mode: 0x1b6,
encoding: 'utf8'
});
} catch (_error) {
err = _error;
die("Failed to open output stream:", err.stack);
}
}
$.log.out = function() {
var a;
a = 1 <= arguments.length ? __slice.call(arguments, 0) : [];
try {
return outStr.write(a.map($.toString).join(' ') + "\n", 'utf8');
} catch (_error) {
err = _error;
return die("Failed to write to log:", err.stack);
}
};
Helpers = require('./helpers');
Herd = require('./herd');
if (Opts.example) {
d = Herd.defaults();
_ref = require("./child"), Server = _ref.Server, Worker = _ref.Worker;
d.servers.push(Server.defaults());
d.workers.push(Worker.defaults());
console.log(JSON.stringify(d, null, ' '));
process.exit(0);
}
if (Opts.P && Opts.daemon) {
Fs.writeFileSync(Opts.P, String(process.pid));
}
Helpers.readJson(Opts.F).wait(function(err, config) {
if (err) {
die("Failed to open herd file:", Opts.F, err.stack);
}
log("Starting new herd, shepherd PID: " + process.pid);
return new Herd(config).start().wait(function(err) {
var _ref1;
if (err) {
return die("Failed to start herd:", (_ref1 = err.stack) != null ? _ref1 : err);
}
});
});
}).call(this);