kopia lustrzana https://github.com/c9/core
Start most important services first, then start other services
rodzic
f4fad46d3e
commit
4f70399e3f
49
server.js
49
server.js
|
@ -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;
|
||||
|
||||
|
|
Ładowanie…
Reference in New Issue