瀏覽代碼

Добавил сохранение и загрузку конфига

Book Pauk 6 年之前
父節點
當前提交
c7637eb941
共有 2 個文件被更改,包括 49 次插入5 次删除
  1. 32 0
      server/config/configSaver.js
  2. 17 5
      server/index.js

+ 32 - 0
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
+};

+ 17 - 5
server/index.js

@@ -1,9 +1,11 @@
 const config = require('./config');
 const config = require('./config');
-
 const {initLogger, getLog} = require('./core/getLogger');
 const {initLogger, getLog} = require('./core/getLogger');
 initLogger(config);
 initLogger(config);
 const log = getLog();
 const log = getLog();
 
 
+const configSaver = require('./config/configSaver');
+const argv = require('minimist')(process.argv.slice(2));
+
 const fs = require('fs-extra');
 const fs = require('fs-extra');
 const path = require('path');
 const path = require('path');
 const express = require('express');
 const express = require('express');
@@ -23,15 +25,17 @@ async function init() {
         await fs.remove(appDir);
         await fs.remove(appDir);
         await fs.move(appNewDir, appDir);
         await fs.move(appNewDir, appDir);
     }
     }
+
+    //загружаем конфиг из файла
+    await configSaver.load(config, argv.config);
 }
 }
 
 
 async function main() {
 async function main() {
-    const connPool = new SqliteConnectionPool(20, config);
-    
     log('Initializing');
     log('Initializing');
     await init();
     await init();
 
 
     log('Opening database');
     log('Opening database');
+    const connPool = new SqliteConnectionPool(20, config);
     await connPool.init();
     await connPool.init();
 
 
     //servers
     //servers
@@ -42,7 +46,7 @@ async function main() {
 
 
             let devModule = undefined;
             let devModule = undefined;
             if (serverConfig.branch == 'development') {
             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 = require(devFileName);
                 devModule.webpackDevMiddleware(app);
                 devModule.webpackDevMiddleware(app);
             }
             }
@@ -80,4 +84,12 @@ async function main() {
     }
     }
 }
 }
 
 
-main();
+
+(async() => {
+    try {
+        await main();
+    } catch (e) {
+        console.error(e.message);
+        process.exit(1);
+    }
+})();