Добавлен загрузчик конфигурации со статусами
This commit is contained in:
parent
8c7d9f3924
commit
a7284aa128
5 changed files with 49 additions and 18 deletions
|
|
@ -1,5 +1,4 @@
|
||||||
{
|
[
|
||||||
"redmine_statuses": [
|
|
||||||
{
|
{
|
||||||
"id": 1,
|
"id": 1,
|
||||||
"name": "New"
|
"name": "New"
|
||||||
|
|
@ -15,4 +14,3 @@
|
||||||
}
|
}
|
||||||
// ...
|
// ...
|
||||||
]
|
]
|
||||||
}
|
|
||||||
|
|
@ -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,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
23
src/configs/statuses.config.ts
Normal file
23
src/configs/statuses.config.ts
Normal 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;
|
||||||
|
};
|
||||||
|
|
@ -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;
|
||||||
|
|
|
||||||
5
src/models/statuses-config.model.ts
Normal file
5
src/models/statuses-config.model.ts
Normal file
|
|
@ -0,0 +1,5 @@
|
||||||
|
export type StatusesConfig = {
|
||||||
|
id: number;
|
||||||
|
name: string;
|
||||||
|
is_closed?: boolean;
|
||||||
|
}[];
|
||||||
Loading…
Reference in a new issue