From 0ab15a4b214fb16f69f8c8ece9ae81b438a650f7 Mon Sep 17 00:00:00 2001 From: Gabriel-Ladzaretti <97394622+Gabriel-Ladzaretti@users.noreply.github.com> Date: Wed, 5 Oct 2022 13:36:41 +0300 Subject: [PATCH] refactor(replacements): added support for multiple args for addPrestes (#18124) --- .../internal/auto-generate-replacements.ts | 49 +++++++++++-------- lib/config/presets/internal/replacements.ts | 14 +++--- 2 files changed, 36 insertions(+), 27 deletions(-) diff --git a/lib/config/presets/internal/auto-generate-replacements.ts b/lib/config/presets/internal/auto-generate-replacements.ts index 688449e93b..b904b6bcb0 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 2e93e4960f..a1a68a9b31 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', }; -- GitLab