diff --git a/gulpfile.ts b/gulpfile.ts index b08a517805..f3645bd9bf 100644 --- a/gulpfile.ts +++ b/gulpfile.ts @@ -38,7 +38,7 @@ if (!fs.existsSync('./.config/config.yml')) { (global as any).MISSKEY_CONFIG_PATH = '.config/config.yml'; import { IConfig } from './src/config'; -const config = eval(require('typescript').transpile(require('fs').readFileSync('./src/config.ts').toString())) as IConfig; +const config = eval(require('typescript').transpile(require('fs').readFileSync('./src/config.ts').toString()))() as IConfig; const tsProject = ts.createProject('tsconfig.json'); diff --git a/src/conf.ts b/src/conf.ts new file mode 100644 index 0000000000..b04a4c8594 --- /dev/null +++ b/src/conf.ts @@ -0,0 +1,3 @@ +import load from './config'; + +export default load(); diff --git a/src/config.ts b/src/config.ts index 916aaab580..342e2db78b 100644 --- a/src/config.ts +++ b/src/config.ts @@ -6,6 +6,8 @@ import * as fs from 'fs'; import * as yaml from 'js-yaml'; import * as isUrl from 'is-url'; +export const path = (global as any).MISSKEY_CONFIG_PATH ? (global as any).MISSKEY_CONFIG_PATH : `${__dirname}/../.config/config.yml`; + /** * ユーザーが設定する必要のある情報 */ @@ -62,10 +64,7 @@ interface Mixin { export type IConfig = ISource & Mixin; -export default load(); - -function load() { - const path = (global as any).MISSKEY_CONFIG_PATH ? (global as any).MISSKEY_CONFIG_PATH : `${__dirname}/../.config/config.yml`; +export default function load() { const config = yaml.safeLoad(fs.readFileSync(path, 'utf8')) as ISource; const mixin: Mixin = {} as Mixin; diff --git a/src/index.ts b/src/index.ts index 48ca660be5..b025463e38 100644 --- a/src/index.ts +++ b/src/index.ts @@ -21,12 +21,13 @@ import EnvironmentInfo from './utils/environmentInfo'; import MachineInfo from './utils/machineInfo'; import DependencyInfo from './utils/dependencyInfo'; +import { path as configPath } from './config'; +import loadConfig from './config'; + // Init babel require('babel-core/register'); require('babel-polyfill'); -global.config = require('./config').default(`${__dirname}/../.config/config.yml`); - enum InitResult { Success, Warn, @@ -76,6 +77,8 @@ async function masterMain(): Promise { return; } + const config = loadConfig(); + spawnWorkers(() => { Logger.info(chalk.bold.green(`Now listening on port ${config.port}`)); @@ -103,9 +106,6 @@ async function masterMain(): Promise { * Init worker proccess */ function workerMain(): void { - // Register config - global.config = config; - // Init mongo initdb().then(db => { global.db = db; @@ -134,11 +134,13 @@ async function init(): Promise { new DependencyInfo().showAll(); let configLogger = new Logger('Config'); - if (!fs.existsSync(`${__dirname}/../.config/config.yml`)) { + if (!fs.existsSync(configPath)) { configLogger.error('Configuration not found'); return InitResult.Failure; } + const config = loadConfig(); + configLogger.info('Successfully loaded'); configLogger.info(`maintainer: ${config.maintainer}`); diff --git a/src/server.ts b/src/server.ts index 1a7d8e59b0..63a9b18b6b 100644 --- a/src/server.ts +++ b/src/server.ts @@ -8,7 +8,7 @@ import * as https from 'https'; import * as express from 'express'; import vhost = require('vhost'); -import config from './config'; +import config from './conf'; /** * Init app