cloudcmd/cloudcmd.js

88 lines
2.3 KiB
JavaScript

(function() {
'use strict';
var DIR = __dirname + '/',
DIR_LIB = DIR + 'lib/',
DIR_SERVER = DIR + 'lib/server/',
fs = require('fs'),
win = require(DIR_SERVER + 'win'),
main = require(DIR_SERVER + 'main'),
update = require(DIR_SERVER + 'update'),
tryRequire = require(DIR_SERVER + 'tryRequire'),
Util = require(DIR_LIB + 'util'),
server = require(DIR_LIB + 'server'),
Config = main.config;
module.exports = function(params) {
readConfig(function(error, config) {
var keys;
if (error)
Util.log(error.message);
if (!config)
config = {};
if (params) {
keys = Object.keys(params);
keys.forEach(function(item) {
config[item] = params[item];
});
}
init(config);
});
win.prepareCodePage();
};
function init(config) {
Util.log('server dir: ' + DIR);
if (update)
update.get();
if (config) {
main.config = Config = config;
if (config.test)
Config.server = false;
}
if (Config.logs) {
Util.log('log param setted up in config.json\n' +
'from now all logs will be writed to log.txt');
writeLogsToFile();
}
server.start();
}
function readConfig(callback) {
var error,
configPath = DIR + 'json/config.json',
config = tryRequire(configPath, function(err) {
if (err)
error = err;
});
Util.checkArgs(arguments, ['callback']);
callback(error, config);
}
/* function sets stdout to file log.txt */
function writeLogsToFile() {
var stdout = process.stdout,
writeFile = fs.createWriteStream('log.txt'),
write = writeFile.write.bind(writeFile);
stdout.write = write;
}
})();