From 01f7b2a06608218deea74e7321aedfaa3956fe53 Mon Sep 17 00:00:00 2001 From: Maksim Sharipov Date: Mon, 23 Aug 2021 23:17:35 +0200 Subject: [PATCH] feat(config): add applyMigrations function --- lib/config/migration.ts | 10 ++-------- lib/config/migrations/index.ts | 18 ++++++++++++++++++ lib/config/migrations/migration.ts | 2 +- .../required-status-checks-migration.ts | 5 +---- 4 files changed, 22 insertions(+), 13 deletions(-) create mode 100644 lib/config/migrations/index.ts diff --git a/lib/config/migration.ts b/lib/config/migration.ts index c13d265f1d0842..0cff7aa420f5ef 100644 --- a/lib/config/migration.ts +++ b/lib/config/migration.ts @@ -4,8 +4,7 @@ import { dequal } from 'dequal'; import { logger } from '../logger'; import { clone } from '../util/clone'; import { getGlobalConfig } from './global'; -import type { Migration } from './migrations/migration'; -import { RequiredStatusChecksMigration } from './migrations/required-status-checks-migration'; +import { applyMigrations } from './migrations'; import { getOptions } from './options'; import { removedPresets } from './presets/common'; import type { @@ -59,12 +58,7 @@ export function migrateConfig( 'peerDependencies', ]; const { migratePresets } = getGlobalConfig(); - const migrations: Migration[] = [ - new RequiredStatusChecksMigration(config, migratedConfig), - ]; - migrations.forEach((migration) => { - migration.migrate(); - }); + applyMigrations(config, migratedConfig); for (const [key, val] of Object.entries(config)) { if (removedOptions.includes(key)) { delete migratedConfig[key]; diff --git a/lib/config/migrations/index.ts b/lib/config/migrations/index.ts new file mode 100644 index 00000000000000..1f6c961c293031 --- /dev/null +++ b/lib/config/migrations/index.ts @@ -0,0 +1,18 @@ +import { RenovateConfig } from '../types'; +import type { Migration } from './migration'; +import { RequiredStatusChecksMigration } from './required-status-checks-migration'; + +export function applyMigrations( + originalConfig: RenovateConfig, + migratedConfig: RenovateConfig +): RenovateConfig { + const migrations: Migration[] = [ + new RequiredStatusChecksMigration(originalConfig, migratedConfig), + ]; + + for (const migration of migrations) { + migration.migrate(); + } + + return migratedConfig; +} diff --git a/lib/config/migrations/migration.ts b/lib/config/migrations/migration.ts index 9c4ce334cff02f..616b96caeaeb17 100644 --- a/lib/config/migrations/migration.ts +++ b/lib/config/migrations/migration.ts @@ -10,7 +10,7 @@ export abstract class Migration { this.migratedConfig = migratedConfig; } - abstract migrate(): RenovateConfig; + abstract migrate(): void; protected delete(property: string): void { delete this.migratedConfig[property]; diff --git a/lib/config/migrations/required-status-checks-migration.ts b/lib/config/migrations/required-status-checks-migration.ts index 037ced008635a1..3f6d64e28fe7cf 100644 --- a/lib/config/migrations/required-status-checks-migration.ts +++ b/lib/config/migrations/required-status-checks-migration.ts @@ -1,14 +1,11 @@ -import { RenovateConfig } from '../types'; import { Migration } from './migration'; export class RequiredStatusChecksMigration extends Migration { - public migrate(): RenovateConfig { + public migrate(): void { this.delete('requiredStatusChecks'); if (this.originalConfig.requiredStatusChecks === null) { this.migratedConfig.ignoreTests = true; } - - return this.migratedConfig; } }