1
0
Fork 0
mirror of https://github.com/muerwre/vk-tg-bot.git synced 2025-04-25 15:06:41 +07:00
This commit is contained in:
Fedor Katurov 2021-04-07 17:33:36 +07:00
commit ddefc2743a
21 changed files with 873 additions and 0 deletions

18
src/config/index.ts Normal file
View file

@ -0,0 +1,18 @@
import yaml from 'js-yaml'
import fs from 'fs'
import path from 'path';
import { Config } from './types';
import { mergeRight } from 'ramda';
import { validateConfig } from './validate';
import logger from '../service/logger';
const defaultConfig = yaml.load<Config>(fs.readFileSync(path.join(__dirname, '../config.example.yml'), 'utf8'));
const userConfig = yaml.load<Config>(fs.readFileSync(path.join(__dirname, '../config.yml'), 'utf8'));
const config = userConfig && mergeRight(defaultConfig, userConfig) || defaultConfig
export default function prepareConfig() {
validateConfig(config)
logger.debug('config is ok:', config)
return config
}

9
src/config/types.ts Normal file
View file

@ -0,0 +1,9 @@
import { TelegramConfig } from '../service/telegram/types';
import { VkConfig } from '../service/vk/types';
import { HttpConfig } from '../api/http/types';
export interface Config extends Record<string, any>{
http: HttpConfig
telegram: TelegramConfig
vk: VkConfig
}

13
src/config/validate.ts Normal file
View file

@ -0,0 +1,13 @@
import { object } from 'yup'
import { httpConfigSchema } from '../api/http/validation';
import { Config } from './types';
import { vkConfigSchema } from '../service/vk/validation';
import { telegramConfigSchema } from '../service/telegram/validation';
const configSchema = object<Config>().required().shape({
http: httpConfigSchema,
vk: vkConfigSchema,
telegram: telegramConfigSchema,
})
export const validateConfig = (config: Config) => configSchema.validateSync(config)