From 3c034be7a8b3f15d920f6a15b0aff3424f8ddaeb Mon Sep 17 00:00:00 2001 From: Pavel Gnedov Date: Tue, 4 Oct 2022 06:59:27 +0700 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=B0=20=D0=B7=D0=B0=D0=B3=D1=80=D1=83=D0=B7=D0=BA=D0=B0?= =?UTF-8?q?=20=D0=BA=D0=BE=D0=BD=D1=84=D0=B8=D0=B3=D1=83=D1=80=D0=B0=D1=86?= =?UTF-8?q?=D0=B8=D0=B8=20=D0=B0=D0=BA=D1=82=D1=83=D0=B0=D0=BB=D1=8C=D0=BD?= =?UTF-8?q?=D1=8B=D1=85=20=D0=B2=D0=B5=D1=80=D1=81=D0=B8=D0=B9=20eccm?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/configs/app.ts | 3 +++ src/configs/eccm-versions.config.ts | 24 ++++++++++++++++++++++++ src/models/app-config.model.ts | 2 ++ src/models/eccm-versions-config.model.ts | 4 ++++ 4 files changed, 33 insertions(+) create mode 100644 src/configs/eccm-versions.config.ts create mode 100644 src/models/eccm-versions-config.model.ts 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[]; +}