From e7899422fa86501fc9ef7adc810ce1c9956036f0 Mon Sep 17 00:00:00 2001 From: Rhys Arkins <rhys@arkins.net> Date: Tue, 12 Apr 2022 08:07:27 +0100 Subject: [PATCH] fix(manager/npm): deduplicate yarn upgrade strings (#15069) --- lib/modules/manager/npm/post-update/yarn.spec.ts | 5 +++++ lib/modules/manager/npm/post-update/yarn.ts | 3 +++ lib/util/string.ts | 8 ++++++++ 3 files changed, 16 insertions(+) diff --git a/lib/modules/manager/npm/post-update/yarn.spec.ts b/lib/modules/manager/npm/post-update/yarn.spec.ts index 7497948b0d..bdf1c1cf4b 100644 --- a/lib/modules/manager/npm/post-update/yarn.spec.ts +++ b/lib/modules/manager/npm/post-update/yarn.spec.ts @@ -151,6 +151,11 @@ describe('modules/manager/npm/post-update/yarn', () => { newValue: '^1.0.0', isLockfileUpdate: true, }, + { + depName: 'some-dep', + newValue: '^1.0.0', + isLockfileUpdate: true, + }, ]); expect(res.lockFile).toBe('package-lock-contents'); expect(fixSnapshots(execSnapshots)).toMatchSnapshot(); diff --git a/lib/modules/manager/npm/post-update/yarn.ts b/lib/modules/manager/npm/post-update/yarn.ts index 27fc5e69b6..b76fb9fd30 100644 --- a/lib/modules/manager/npm/post-update/yarn.ts +++ b/lib/modules/manager/npm/post-update/yarn.ts @@ -13,6 +13,7 @@ import { exec } from '../../../../util/exec'; import type { ExecOptions } from '../../../../util/exec/types'; import { exists, readFile, remove, writeFile } from '../../../../util/fs'; import { newlineRegex, regEx } from '../../../../util/regex'; +import { uniqueStrings } from '../../../../util/string'; import { NpmDatasource } from '../../../datasource/npm'; import type { PostUpdateConfig, Upgrade } from '../../types'; import { getNodeConstraint } from './node-version'; @@ -178,6 +179,7 @@ export async function generateLockFile( commands.push( `yarn upgrade ${lockUpdates .map((update) => update.depName) + .filter(uniqueStrings) .join(' ')}${cmdOptions}` ); } else { @@ -185,6 +187,7 @@ export async function generateLockFile( commands.push( `yarn up ${lockUpdates .map((update) => `${update.depName}@${update.newValue}`) + .filter(uniqueStrings) .join(' ')}${cmdOptions}` ); } diff --git a/lib/util/string.ts b/lib/util/string.ts index d62cbddfc7..a0f455bfe3 100644 --- a/lib/util/string.ts +++ b/lib/util/string.ts @@ -37,3 +37,11 @@ export function toBase64(input: string): string { export function fromBase64(input: string): string { return Buffer.from(input, 'base64').toString(); } + +export function uniqueStrings( + element: string, + index: number, + elements: string[] +): boolean { + return elements.indexOf(element) === index; +} -- GitLab