Skip to content

Commit

Permalink
migrate string values
Browse files Browse the repository at this point in the history
  • Loading branch information
RahulGautamSingh committed Aug 28, 2024
1 parent 2e48977 commit ab783c2
Show file tree
Hide file tree
Showing 2 changed files with 79 additions and 23 deletions.
45 changes: 45 additions & 0 deletions lib/config/migrations/custom/package-rules-migration.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -174,6 +174,51 @@ describe('config/migrations/custom/package-rules-migration', () => {
);
});

it('should migrate all match/exclude when value is of type string', () => {
expect(PackageRulesMigration).toMigrate(
{
packageRules: [
{
matchPackagePatterns: 'pattern',
matchPackagePrefixes: 'prefix1',
matchSourceUrlPrefixes: 'prefix1',
excludePackageNames: 'excluded',
excludePackagePatterns: 'excludepattern',
excludePackagePrefixes: 'prefix1b',
matchDepPatterns: 'pattern',
matchDepPrefixes: 'prefix1',
excludeDepNames: 'excluded',
excludeDepPatterns: 'excludepattern',
excludeDepPrefixes: 'prefix1b',
automerge: true,
},
],
},
{
packageRules: [
{
matchPackageNames: [
'/pattern/',
'prefix1{/,}**',
'!excluded',
'!/excludepattern/',
'!prefix1b{/,}**',
],
matchDepNames: [
'/pattern/',
'prefix1{/,}**',
'!excluded',
'!/excludepattern/',
'!prefix1b{/,}**',
],
matchSourceUrls: ['prefix1{/,}**'],
automerge: true,
},
],
},
);
});

it('should migrate all match/exclude at once', () => {
expect(PackageRulesMigration).toMigrate(
{
Expand Down
57 changes: 34 additions & 23 deletions lib/config/migrations/custom/package-rules-migration.ts
Original file line number Diff line number Diff line change
Expand Up @@ -30,52 +30,57 @@ function renameKeys(packageRule: PackageRule): PackageRule {
function mergeMatchers(packageRule: PackageRule): PackageRule {
const newPackageRule: PackageRule = { ...packageRule };
for (const [key, val] of Object.entries(packageRule)) {
const patterns = is.string(val) ? [val] : val;

// depName
if (key === 'matchDepPrefixes') {
if (is.array(val, is.string)) {
if (is.array(patterns, is.string)) {
newPackageRule.matchDepNames ??= [];
newPackageRule.matchDepNames.push(...val.map((v) => `${v}{/,}**`));
newPackageRule.matchDepNames.push(...patterns.map((v) => `${v}{/,}**`));
}
delete newPackageRule.matchDepPrefixes;
}
if (key === 'matchDepPatterns') {
if (is.array(val, is.string)) {
if (is.array(patterns, is.string)) {
newPackageRule.matchDepNames ??= [];
newPackageRule.matchDepNames.push(...val.map((v) => `/${v}/`));
newPackageRule.matchDepNames.push(...patterns.map((v) => `/${v}/`));
}
delete newPackageRule.matchDepPatterns;
}
if (key === 'excludeDepNames') {
if (is.array(val, is.string)) {
if (is.array(patterns, is.string)) {
newPackageRule.matchDepNames ??= [];
newPackageRule.matchDepNames.push(...val.map((v) => `!${v}`));
newPackageRule.matchDepNames.push(...patterns.map((v) => `!${v}`));
}
delete newPackageRule.excludeDepNames;
}
if (key === 'excludeDepPrefixes') {
if (is.array(val, is.string)) {
if (is.array(patterns, is.string)) {
newPackageRule.matchDepNames ??= [];
newPackageRule.matchDepNames.push(...val.map((v) => `!${v}{/,}**`));
newPackageRule.matchDepNames.push(
...patterns.map((v) => `!${v}{/,}**`),
);
}
delete newPackageRule.excludeDepPrefixes;
}
if (key === 'excludeDepPatterns') {
if (is.array(val, is.string)) {
if (is.array(patterns, is.string)) {
newPackageRule.matchDepNames ??= [];
newPackageRule.matchDepNames.push(...val.map((v) => `!/${v}/`));
newPackageRule.matchDepNames.push(...patterns.map((v) => `!/${v}/`));
}
delete newPackageRule.excludeDepPatterns;
}
// packageName
if (key === 'matchPackagePrefixes') {
if (is.array(val, is.string)) {
if (is.array(patterns, is.string)) {
newPackageRule.matchPackageNames ??= [];
newPackageRule.matchPackageNames.push(...val.map((v) => `${v}{/,}**`));
newPackageRule.matchPackageNames.push(
...patterns.map((v) => `${v}{/,}**`),
);
}
delete newPackageRule.matchPackagePrefixes;
}
if (key === 'matchPackagePatterns') {
const patterns = is.string(val) ? [val] : val;
if (is.array(patterns, is.string)) {
newPackageRule.matchPackageNames ??= [];
newPackageRule.matchPackageNames.push(
Expand All @@ -90,39 +95,45 @@ function mergeMatchers(packageRule: PackageRule): PackageRule {
delete newPackageRule.matchPackagePatterns;
}
if (key === 'excludePackageNames') {
if (is.array(val, is.string)) {
if (is.array(patterns, is.string)) {
newPackageRule.matchPackageNames ??= [];
newPackageRule.matchPackageNames.push(...val.map((v) => `!${v}`));
newPackageRule.matchPackageNames.push(...patterns.map((v) => `!${v}`));
}
delete newPackageRule.excludePackageNames;
}
if (key === 'excludePackagePrefixes') {
if (is.array(val, is.string)) {
if (is.array(patterns, is.string)) {
newPackageRule.matchPackageNames ??= [];
newPackageRule.matchPackageNames.push(...val.map((v) => `!${v}{/,}**`));
newPackageRule.matchPackageNames.push(
...patterns.map((v) => `!${v}{/,}**`),
);
}
delete newPackageRule.excludePackagePrefixes;
}
if (key === 'excludePackagePatterns') {
if (is.array(val, is.string)) {
if (is.array(patterns, is.string)) {
newPackageRule.matchPackageNames ??= [];
newPackageRule.matchPackageNames.push(...val.map((v) => `!/${v}/`));
newPackageRule.matchPackageNames.push(
...patterns.map((v) => `!/${v}/`),
);
}
delete newPackageRule.excludePackagePatterns;
}
// sourceUrl
if (key === 'matchSourceUrlPrefixes') {
if (is.array(val, is.string)) {
if (is.array(patterns, is.string)) {
newPackageRule.matchSourceUrls ??= [];
newPackageRule.matchSourceUrls.push(...val.map((v) => `${v}{/,}**`));
newPackageRule.matchSourceUrls.push(
...patterns.map((v) => `${v}{/,}**`),
);
}
delete newPackageRule.matchSourceUrlPrefixes;
}
// repository
if (key === 'excludeRepositories') {
if (is.array(val, is.string)) {
if (is.array(patterns, is.string)) {
newPackageRule.matchRepositories ??= [];
newPackageRule.matchRepositories.push(...val.map((v) => `!${v}`));
newPackageRule.matchRepositories.push(...patterns.map((v) => `!${v}`));
}
delete newPackageRule.excludeRepositories;
}
Expand Down

0 comments on commit ab783c2

Please sign in to comment.