45 lines
1.7 KiB
TypeScript
45 lines
1.7 KiB
TypeScript
import RedmineIssueEventEmitterConfigLoader from '@app/event-emitter/configs/main-config';
|
|
import { readFileSync } from 'fs';
|
|
import { join } from 'path';
|
|
import { parse } from 'jsonc-parser';
|
|
import { AppConfig } from 'src/models/app-config.model';
|
|
import RedmineStatusesConfigLoader from './statuses.config';
|
|
import RedmineStatusChangesConfigLoader from './status-changes.config';
|
|
import RedmineEccmConfig from './eccm.config';
|
|
import RedmineCurrentUserRulesConfig from './current-user-rules.config';
|
|
import SimpleKanbanBoardConfig from './simple-kanban-board.config';
|
|
|
|
const redmineIssueEventEmitterConfig = RedmineIssueEventEmitterConfigLoader();
|
|
const redmineStatusesConfig = RedmineStatusesConfigLoader();
|
|
const redmineStatusChanges = RedmineStatusChangesConfigLoader();
|
|
const redmineEccm = RedmineEccmConfig();
|
|
const redmineCurrentUserRules = RedmineCurrentUserRulesConfig();
|
|
const simpleKanbanBoard = SimpleKanbanBoardConfig();
|
|
|
|
let appConfig: AppConfig;
|
|
|
|
export default (): AppConfig => {
|
|
if (appConfig) {
|
|
return appConfig;
|
|
}
|
|
|
|
const userDefinedConfigPath = process.env['ELTEX_REDMINE_HELPER_CONFIG_PATH'];
|
|
const defaultConfigPath = join('configs', 'main-config.jsonc');
|
|
const configPath = userDefinedConfigPath || defaultConfigPath;
|
|
|
|
const rawData = readFileSync(configPath, { encoding: 'utf-8' });
|
|
|
|
const data = parse(rawData);
|
|
|
|
appConfig = {
|
|
...data,
|
|
redmineStatuses: redmineStatusesConfig,
|
|
redmineIssueEventEmitterConfig: redmineIssueEventEmitterConfig,
|
|
redmineStatusChanges: redmineStatusChanges,
|
|
redmineEccm: redmineEccm,
|
|
redmineCurrentUserRules: redmineCurrentUserRules,
|
|
simpleKanbanBoard: simpleKanbanBoard,
|
|
};
|
|
|
|
return appConfig;
|
|
};
|