diff --git a/src/configs/app.ts b/src/configs/app.ts index 1177c8b..ba66f48 100644 --- a/src/configs/app.ts +++ b/src/configs/app.ts @@ -5,10 +5,12 @@ 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 RedmineEccmVersionsConfig from './eccm-versions.config'; const redmineIssueEventEmitterConfig = RedmineIssueEventEmitterConfigLoader(); const redmineStatusesConfig = RedmineStatusesConfigLoader(); const redmineStatusChanges = RedmineStatusChangesConfigLoader(); +const redmineEccmVersions = RedmineEccmVersionsConfig(); let appConfig: AppConfig; @@ -30,6 +32,7 @@ export default (): AppConfig => { redmineStatuses: redmineStatusesConfig, redmineIssueEventEmitterConfig: redmineIssueEventEmitterConfig, redmineStatusChanges: redmineStatusChanges, + redmineEccmVersions: redmineEccmVersions, }; return appConfig; diff --git a/src/configs/eccm-versions.config.ts b/src/configs/eccm-versions.config.ts new file mode 100644 index 0000000..daa7d29 --- /dev/null +++ b/src/configs/eccm-versions.config.ts @@ -0,0 +1,24 @@ +import { readFileSync } from 'fs'; +import { join } from 'path'; +import { EccmVersionsConfig } from 'src/models/eccm-versions-config.model'; +import { parse } from 'jsonc-parser'; + +let eccmVersion: EccmVersionsConfig.Config; + +export default (): EccmVersionsConfig.Config => { + if (eccmVersion) { + return eccmVersion; + } + + const userDefinedConfigPath = + process.env['ELTEX_REDMINE_HELPER_ECCM_VERSIONS_CONFIG_PATH']; + const defaultConfigPath = join('configs', 'eccm-versions-config.jsonc'); + + const configPath = userDefinedConfigPath || defaultConfigPath; + + const rawData = readFileSync(configPath, { encoding: 'utf-8' }); + + eccmVersion = parse(rawData); + + return eccmVersion; +}; diff --git a/src/models/app-config.model.ts b/src/models/app-config.model.ts index b2356c6..5378116 100644 --- a/src/models/app-config.model.ts +++ b/src/models/app-config.model.ts @@ -1,4 +1,5 @@ import { MainConfigModel } from '@app/event-emitter/models/main-config-model'; +import { EccmVersionsConfig } from './eccm-versions-config.model'; import { StatusChangesConfig } from './status-changes-config.model'; import { StatusesConfig } from './statuses-config.model'; @@ -6,6 +7,7 @@ export type AppConfig = { redmineIssueEventEmitterConfig: MainConfigModel; redmineStatuses: StatusesConfig.Config; redmineStatusChanges: StatusChangesConfig.Config; + redmineEccmVersions: EccmVersionsConfig.Config; couchDb: { dbs: { changes: string; diff --git a/src/models/eccm-versions-config.model.ts b/src/models/eccm-versions-config.model.ts new file mode 100644 index 0000000..932345b --- /dev/null +++ b/src/models/eccm-versions-config.model.ts @@ -0,0 +1,4 @@ +/* eslint-disable @typescript-eslint/no-namespace */ +export namespace EccmVersionsConfig { + export type Config = string[]; +}