Skip to content

Commit

Permalink
feat(config): add applyMigrations function
Browse files Browse the repository at this point in the history
  • Loading branch information
pret-a-porter committed Aug 23, 2021
1 parent 4925bb6 commit 01f7b2a
Show file tree
Hide file tree
Showing 4 changed files with 22 additions and 13 deletions.
10 changes: 2 additions & 8 deletions lib/config/migration.ts
Expand Up @@ -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 {
Expand Down Expand Up @@ -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];
Expand Down
18 changes: 18 additions & 0 deletions 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;
}
2 changes: 1 addition & 1 deletion lib/config/migrations/migration.ts
Expand Up @@ -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];
Expand Down
5 changes: 1 addition & 4 deletions 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;
}
}

0 comments on commit 01f7b2a

Please sign in to comment.