From bb6bc356dcae5753197a093a99466f043b07b8bd Mon Sep 17 00:00:00 2001 From: Rhys Arkins <rhys@arkins.net> Date: Fri, 22 Sep 2023 13:31:58 +0200 Subject: [PATCH] feat(bun): support multiple lock files (#24594) --- lib/modules/manager/bun/readme.md | 3 +-- .../repository/extract/supersedes.spec.ts | 23 +++++++++++++++++-- lib/workers/repository/extract/supersedes.ts | 1 + 3 files changed, 23 insertions(+), 4 deletions(-) diff --git a/lib/modules/manager/bun/readme.md b/lib/modules/manager/bun/readme.md index 0fa2f420f7..807c7f8435 100644 --- a/lib/modules/manager/bun/readme.md +++ b/lib/modules/manager/bun/readme.md @@ -1,5 +1,4 @@ Used for updating bun projects. Bun is a tool for JavaScript projects and therefore an alternative to managers like npm, pnpm and Yarn. -If a `package.json` is found to be part of `bun` manager results then the same file will be excluded from the `npm` manager results so that it's not duplicated. -This means that supporting a `bun.lockb` file in addition to other JS lock files is not supported - Bun will take priority. +If a `package.json` is found to be part of `bun` manager results then the same file will be excluded from the `npm` manager results unless an npm/pnpm/Yarn lock file is also found. diff --git a/lib/workers/repository/extract/supersedes.spec.ts b/lib/workers/repository/extract/supersedes.spec.ts index 247b74e52a..a71e4117ea 100644 --- a/lib/workers/repository/extract/supersedes.spec.ts +++ b/lib/workers/repository/extract/supersedes.spec.ts @@ -14,13 +14,21 @@ describe('workers/repository/extract/supersedes', () => { { manager: 'ansible' }, { manager: 'bun', - packageFiles: [{ packageFile: 'package.json', deps: [] }], + packageFiles: [ + { packageFile: 'package.json', deps: [] }, + { packageFile: 'frontend/package.json', deps: [] }, + ], }, { manager: 'npm', packageFiles: [ { packageFile: 'package.json', deps: [] }, { packageFile: 'backend/package.json', deps: [] }, + { + packageFile: 'frontend/package.json', + deps: [], + lockFiles: ['frontend/yarn.lock'], + }, ], }, ]; @@ -34,11 +42,22 @@ describe('workers/repository/extract/supersedes', () => { deps: [], packageFile: 'package.json', }, + { + deps: [], + packageFile: 'frontend/package.json', + }, ], }, { manager: 'npm', - packageFiles: [{ deps: [], packageFile: 'backend/package.json' }], + packageFiles: [ + { deps: [], packageFile: 'backend/package.json' }, + { + deps: [], + lockFiles: ['frontend/yarn.lock'], + packageFile: 'frontend/package.json', + }, + ], }, ]); }); diff --git a/lib/workers/repository/extract/supersedes.ts b/lib/workers/repository/extract/supersedes.ts index 560d6bb0c5..a0b322f902 100644 --- a/lib/workers/repository/extract/supersedes.ts +++ b/lib/workers/repository/extract/supersedes.ts @@ -22,6 +22,7 @@ export function processSupersedesManagers( supercededManagerResults.packageFiles = supercededManagerResults.packageFiles.filter((packageFile) => { if ( + !packageFile.lockFiles?.length && supercedingPackageFileNames.includes(packageFile.packageFile) ) { return false; -- GitLab