diff --git a/lib/config/presets/internal/auto-generate-replacements.ts b/lib/config/presets/internal/auto-generate-replacements.ts index 688449e93b6f433efafc64dad2b90a384419a4f8..b904b6bcb0c44bcde289fe30e51eb76831999637 100644 --- a/lib/config/presets/internal/auto-generate-replacements.ts +++ b/lib/config/presets/internal/auto-generate-replacements.ts @@ -3,7 +3,7 @@ import type { Preset } from '../types'; export type Replacement = [string[], string]; -export interface AutoPackageRules { +export interface ReplacementRule { matchCurrentVersion: string; matchDatasources: string[]; replacements: Replacement[]; @@ -13,39 +13,46 @@ export interface AutoPackageRules { export interface PresetTemplate { title: string; description: string; - packageRules: AutoPackageRules; + packageRules: ReplacementRule[]; } -function generatePackageRules({ - matchCurrentVersion, - matchDatasources, - replacements, - replacementVersion, -}: AutoPackageRules): PackageRule[] { +function generatePackageRules( + replacementRules: ReplacementRule[] +): PackageRule[] { const rules: PackageRule[] = []; - for (const replacement of replacements) { - const [matchPackageNames, replacementName] = replacement; - rules.push({ + for (const replacementRule of replacementRules) { + const { matchCurrentVersion, matchDatasources, - matchPackageNames, - replacementName, + replacements, replacementVersion, - }); + } = replacementRule; + for (const replacement of replacements) { + const [matchPackageNames, replacementName] = replacement; + rules.push({ + matchCurrentVersion, + matchDatasources, + matchPackageNames, + replacementName, + replacementVersion, + }); + } } return rules; } export function addPresets( presets: Record<string, Preset>, - template: PresetTemplate + ...templates: PresetTemplate[] ): void { - const { title, description, packageRules } = template; - presets[title] = { - description, - packageRules: generatePackageRules(packageRules), - }; const ext = presets.all?.extends ?? []; - ext.push(`replacements:${title}`); + for (const template of templates) { + const { title, description, packageRules } = template; + presets[title] = { + description, + packageRules: generatePackageRules(packageRules), + }; + ext.push(`replacements:${title}`); + } ext.sort(); } diff --git a/lib/config/presets/internal/replacements.ts b/lib/config/presets/internal/replacements.ts index 2e93e4960fd858d76ea6ef9145ee4b362b7101c1..a1a68a9b317a1679d8ae10c3b6fb6db06523834a 100644 --- a/lib/config/presets/internal/replacements.ts +++ b/lib/config/presets/internal/replacements.ts @@ -578,12 +578,14 @@ const muiReplacement: Replacement[] = [ const mui: PresetTemplate = { description: 'The `material-ui` monorepo org was renamed from `@material-ui` to `@mui`.', - packageRules: { - matchCurrentVersion: '>=4.0.0 <5.0.0', - matchDatasources: ['npm'], - replacements: muiReplacement, - replacementVersion: '5.0.0', - }, + packageRules: [ + { + matchCurrentVersion: '>=4.0.0 <5.0.0', + matchDatasources: ['npm'], + replacements: muiReplacement, + replacementVersion: '5.0.0', + }, + ], title: 'material-ui-to-mui', };