From c7637eb9419d45b465e7d50ba56428058aff74aa Mon Sep 17 00:00:00 2001 From: Book Pauk Date: Wed, 13 Feb 2019 17:43:13 +0700 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8=D0=BB=20?= =?UTF-8?q?=D1=81=D0=BE=D1=85=D1=80=D0=B0=D0=BD=D0=B5=D0=BD=D0=B8=D0=B5=20?= =?UTF-8?q?=D0=B8=20=D0=B7=D0=B0=D0=B3=D1=80=D1=83=D0=B7=D0=BA=D1=83=20?= =?UTF-8?q?=D0=BA=D0=BE=D0=BD=D1=84=D0=B8=D0=B3=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/config/configSaver.js | 32 ++++++++++++++++++++++++++++++++ server/index.js | 22 +++++++++++++++++----- 2 files changed, 49 insertions(+), 5 deletions(-) create mode 100644 server/config/configSaver.js diff --git a/server/config/configSaver.js b/server/config/configSaver.js new file mode 100644 index 00000000..f9ead224 --- /dev/null +++ b/server/config/configSaver.js @@ -0,0 +1,32 @@ +const fs = require('fs-extra'); +const _ = require('lodash'); + +const propsToSave = [ + 'servers' +]; + +async function load(config, configFilename) { + if (!configFilename) { + configFilename = `${config.dataDir}/config.json`; + + if (!await fs.pathExists(configFilename)) { + save(config); + return; + } + } + + const data = await fs.readFile(configFilename, 'utf8'); + Object.assign(config, JSON.parse(data)); +} + +async function save(config) { + const configFilename = `${config.dataDir}/config.json`; + const dataToSave = _.pick(config, propsToSave); + + await fs.writeFile(configFilename, JSON.stringify(dataToSave, null, 4)); +} + +module.exports = { + load, + save +}; \ No newline at end of file diff --git a/server/index.js b/server/index.js index fcb697e1..1d8e79e9 100644 --- a/server/index.js +++ b/server/index.js @@ -1,9 +1,11 @@ const config = require('./config'); - const {initLogger, getLog} = require('./core/getLogger'); initLogger(config); const log = getLog(); +const configSaver = require('./config/configSaver'); +const argv = require('minimist')(process.argv.slice(2)); + const fs = require('fs-extra'); const path = require('path'); const express = require('express'); @@ -23,15 +25,17 @@ async function init() { await fs.remove(appDir); await fs.move(appNewDir, appDir); } + + //загружаем конфиг из файла + await configSaver.load(config, argv.config); } async function main() { - const connPool = new SqliteConnectionPool(20, config); - log('Initializing'); await init(); log('Opening database'); + const connPool = new SqliteConnectionPool(20, config); await connPool.init(); //servers @@ -42,7 +46,7 @@ async function main() { let devModule = undefined; if (serverConfig.branch == 'development') { - const devFileName = './dev.js'; //ignored by pkg -50Mb executable size + const devFileName = './dev.js'; //require ignored by pkg -50Mb executable size devModule = require(devFileName); devModule.webpackDevMiddleware(app); } @@ -80,4 +84,12 @@ async function main() { } } -main(); \ No newline at end of file + +(async() => { + try { + await main(); + } catch (e) { + console.error(e.message); + process.exit(1); + } +})(); \ No newline at end of file