Start most important services first, then start other services

pull/117/merge
Lennart Kats 2015-06-07 19:59:50 +00:00
rodzic f4fad46d3e
commit 4f70399e3f
1 zmienionych plików z 38 dodań i 11 usunięć

Wyświetl plik

@ -9,6 +9,7 @@ try {
var path = require("path");
var architect = require("architect");
var optimist = require("optimist");
var async = require("async");
if (process.version.match(/^v0/) && parseFloat(process.version.substr(3)) < 10) {
console.warn("You're using Node.js version " + process.version
@ -26,6 +27,7 @@ var shortcuts = {
"ci" : ["ide", "preview", "vfs", "proxy", "-s", "ci"],
"s" : ["standalone", "-s", "standalone"]
};
var delayLoadConfigs = ["preview", "api", "oldclient", "apps-proxy", "worker"];
module.exports = main;
@ -47,7 +49,7 @@ function getDefaultSettings() {
module.exports.getDefaultSettings = getDefaultSettings;
function main(argv, config, callback) {
function main(argv, config, onLoaded) {
var options = optimist(argv)
.usage("Usage: $0 [CONFIG_NAME] [--help]")
.alias("s", "settings")
@ -62,20 +64,45 @@ function main(argv, config, callback) {
var configs = options.argv._;
if (!configs.length)
configs = [config || DEFAULT_CONFIG];
configs.forEach(function(config) {
if (shortcuts[config]) {
return main(shortcuts[config].concat(argv.filter(function(arg) {
return arg != config;
})), null, callback);
}
else {
start(config, options, callback);
}
var expanded = expandShortCuts(configs);
if (expanded.length > configs.length)
return main(expanded.concat(argv.filter(function(arg) {
return !shortcuts[arg];
})), config, onLoaded);
var delayed = expanded.filter(function(c) { return delayLoadConfigs.indexOf(c) !== -1 });
var notDelayed = expanded.filter(function(c) { return delayLoadConfigs.indexOf(c) === -1 });
startConfigs(notDelayed, function() {
startConfigs(delayed, function() {});
});
function startConfigs(configs, done) {
async.each(configs, function(config, next) {
start(config, options, function(err, result) {
onLoaded && onLoaded(err, result);
next(err);
});
}, done);
}
}
function expandShortCuts(configs) {
var results = configs.slice();
for (var i = 0; i < results.length; i++) {
var expanded = shortcuts[results[i]];
if (expanded) {
results.splice.apply(results, [i, 1].concat(expanded));
i += expanded.length - 1;
}
}
return results;
}
function start(configName, options, callback) {
console.log("Starting", configName);
var argv = options.argv;
var settingsName = argv.settings;