Skip to content

Commit

Permalink
refactor(migrations): migrate node (#16422)
Browse files Browse the repository at this point in the history
Co-authored-by: Jamie Magee <jamie.magee@gmail.com>
  • Loading branch information
RahulGautamSingh and JamieMagee committed Jul 6, 2022
1 parent 895218d commit 8b9d038
Show file tree
Hide file tree
Showing 4 changed files with 50 additions and 11 deletions.
11 changes: 0 additions & 11 deletions lib/config/migration.ts
Expand Up @@ -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 = [];
Expand Down
26 changes: 26 additions & 0 deletions 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 },
}
);
});
});
22 changes: 22 additions & 0 deletions 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);
}
}
}
2 changes: 2 additions & 0 deletions lib/config/migrations/migrations-service.ts
Expand Up @@ -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';
Expand Down Expand Up @@ -127,6 +128,7 @@ export class MigrationsService {
VersionStrategyMigration,
DryRunMigration,
RequireConfigMigration,
NodeMigration,
SemanticPrefixMigration,
];

Expand Down

0 comments on commit 8b9d038

Please sign in to comment.