Добавлен загрузчик конфигурации со статусами

This commit is contained in:
Pavel Gnedov 2022-07-25 01:42:08 +07:00
parent 8c7d9f3924
commit a7284aa128
5 changed files with 49 additions and 18 deletions

View file

@ -1,5 +1,4 @@
{ [
"redmine_statuses": [
{ {
"id": 1, "id": 1,
"name": "New" "name": "New"
@ -15,4 +14,3 @@
} }
// ... // ...
] ]
}

View file

@ -3,8 +3,10 @@ import { readFileSync } from 'fs';
import { join } from 'path'; import { join } from 'path';
import { parse } from 'jsonc-parser'; import { parse } from 'jsonc-parser';
import { AppConfig } from 'src/models/app-config.model'; import { AppConfig } from 'src/models/app-config.model';
import RedmineStatusesConfigLoader from './statuses.config';
const redmineIssueEventEmitterConfig = RedmineIssueEventEmitterConfigLoader(); const redmineIssueEventEmitterConfig = RedmineIssueEventEmitterConfigLoader();
const redmineStatusesConfig = RedmineStatusesConfigLoader();
let appConfig: AppConfig; let appConfig: AppConfig;
@ -23,6 +25,7 @@ export default (): AppConfig => {
appConfig = { appConfig = {
...data, ...data,
redmineStatuses: redmineStatusesConfig,
redmineIssueEventEmitterConfig: redmineIssueEventEmitterConfig, redmineIssueEventEmitterConfig: redmineIssueEventEmitterConfig,
}; };

View file

@ -0,0 +1,23 @@
import { StatusesConfig } from 'src/models/statuses-config.model';
import { parse } from 'jsonc-parser';
import { join } from 'path';
import { readFileSync } from 'fs';
let redmineStatues: StatusesConfig;
export default (): StatusesConfig => {
if (redmineStatues) {
return redmineStatues;
}
const userDefinedConfigPath =
process.env['ELTEX_REDMINE_HELPER_STATUSES_CONFIG_PATH'];
const defaultConfigPath = join('configs', 'redmine-statuses-config.jsonc');
const configPath = userDefinedConfigPath || defaultConfigPath;
const rawData = readFileSync(configPath, { encoding: 'utf-8' });
redmineStatues = parse(rawData);
return redmineStatues;
};

View file

@ -1,7 +1,9 @@
import { MainConfigModel } from '@app/event-emitter/models/main-config-model'; import { MainConfigModel } from '@app/event-emitter/models/main-config-model';
import { StatusesConfig } from './statuses-config.model';
export type AppConfig = { export type AppConfig = {
redmineIssueEventEmitterConfig: MainConfigModel; redmineIssueEventEmitterConfig: MainConfigModel;
redmineStatuses: StatusesConfig;
couchDb: { couchDb: {
dbs: { dbs: {
changes: string; changes: string;

View file

@ -0,0 +1,5 @@
export type StatusesConfig = {
id: number;
name: string;
is_closed?: boolean;
}[];