From 8b9d038fa30d3acffe706b15f751b1f40690c7c4 Mon Sep 17 00:00:00 2001 From: RahulGautamSingh <rahultesnik@gmail.com> Date: Wed, 6 Jul 2022 10:09:48 +0530 Subject: [PATCH] refactor(migrations): migrate node (#16422) Co-authored-by: Jamie Magee <jamie.magee@gmail.com> --- lib/config/migration.ts | 11 -------- .../migrations/custom/node-migration.spec.ts | 26 +++++++++++++++++++ .../migrations/custom/node-migration.ts | 22 ++++++++++++++++ lib/config/migrations/migrations-service.ts | 2 ++ 4 files changed, 50 insertions(+), 11 deletions(-) create mode 100644 lib/config/migrations/custom/node-migration.spec.ts create mode 100644 lib/config/migrations/custom/node-migration.ts diff --git a/lib/config/migration.ts b/lib/config/migration.ts index 4fcd2c952e..2d35cafd13 100644 --- a/lib/config/migration.ts +++ b/lib/config/migration.ts @@ -137,17 +137,6 @@ export function migrateConfig(config: RenovateConfig): MigratedConfig { val.length === 1 ) { migratedConfig[key] = String(val[0]); - } else if (key === 'node' && (val as RenovateConfig).enabled === true) { - // validated non-null - delete migratedConfig.node!.enabled; - migratedConfig.travis = migratedConfig.travis ?? {}; - migratedConfig.travis.enabled = true; - if (Object.keys(migratedConfig.node!).length) { - const subMigrate = migrateConfig(migratedConfig.node!); - migratedConfig.node = subMigrate.migratedConfig; - } else { - delete migratedConfig.node; - } } else if (is.array(val)) { if (is.array(migratedConfig?.[key])) { const newArray = []; diff --git a/lib/config/migrations/custom/node-migration.spec.ts b/lib/config/migrations/custom/node-migration.spec.ts new file mode 100644 index 0000000000..c7eaa60f6f --- /dev/null +++ b/lib/config/migrations/custom/node-migration.spec.ts @@ -0,0 +1,26 @@ +import { NodeMigration } from './node-migration'; + +describe('config/migrations/custom/node-migration', () => { + it('should migrate node to travis', () => { + expect(NodeMigration).toMigrate( + { + node: { enabled: true }, + }, + { + travis: { enabled: true }, + } + ); + }); + + it('should not delete node incase it has more than one property', () => { + expect(NodeMigration).toMigrate( + { + node: { enabled: true, automerge: false }, + }, + { + node: { automerge: false }, + travis: { enabled: true }, + } + ); + }); +}); diff --git a/lib/config/migrations/custom/node-migration.ts b/lib/config/migrations/custom/node-migration.ts new file mode 100644 index 0000000000..7baee4c8fe --- /dev/null +++ b/lib/config/migrations/custom/node-migration.ts @@ -0,0 +1,22 @@ +import type { RenovateConfig } from '../../types'; +import { AbstractMigration } from '../base/abstract-migration'; + +export class NodeMigration extends AbstractMigration { + override readonly propertyName = 'node'; + + override run(value: unknown): void { + const node = this.get('node') as RenovateConfig; + if ((value as RenovateConfig).enabled === true) { + // validated non-null + delete node.enabled; + const travis = (this.get('travis') ?? {}) as RenovateConfig; + travis.enabled = true; + if (Object.keys(node).length) { + this.rewrite(node); + } else { + this.delete('node'); + } + this.setSafely('travis', travis); + } + } +} diff --git a/lib/config/migrations/migrations-service.ts b/lib/config/migrations/migrations-service.ts index 4097ad0617..9093003b10 100644 --- a/lib/config/migrations/migrations-service.ts +++ b/lib/config/migrations/migrations-service.ts @@ -23,6 +23,7 @@ import { HostRulesMigration } from './custom/host-rules-migration'; import { IgnoreNodeModulesMigration } from './custom/ignore-node-modules-migration'; import { IgnoreNpmrcFileMigration } from './custom/ignore-npmrc-file-migration'; import { MatchStringsMigration } from './custom/match-strings-migration'; +import { NodeMigration } from './custom/node-migration'; import { PackageNameMigration } from './custom/package-name-migration'; import { PackagePatternMigration } from './custom/package-pattern-migration'; import { PackagesMigration } from './custom/packages-migration'; @@ -127,6 +128,7 @@ export class MigrationsService { VersionStrategyMigration, DryRunMigration, RequireConfigMigration, + NodeMigration, SemanticPrefixMigration, ]; -- GitLab