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