From 49b66c69232fa2ee1b3d720c925d52715a7bae9c Mon Sep 17 00:00:00 2001 From: QuiiBz Date: Fri, 10 Mar 2023 10:16:19 +0100 Subject: [PATCH] feat(changesets-renovate): ignore changes in workspace's root package.json --- .changeset/happy-items-look.md | 5 +++ .../src/__tests__/generate-changeset.ts | 33 +++++++++++++++++++ packages/changesets-renovate/src/index.ts | 18 ++++++++-- 3 files changed, 54 insertions(+), 2 deletions(-) create mode 100644 .changeset/happy-items-look.md diff --git a/.changeset/happy-items-look.md b/.changeset/happy-items-look.md new file mode 100644 index 000000000..4725e3d0c --- /dev/null +++ b/.changeset/happy-items-look.md @@ -0,0 +1,5 @@ +--- +'@scaleway/changesets-renovate': minor +--- + +Ignore changes in workspace's root package.json diff --git a/packages/changesets-renovate/src/__tests__/generate-changeset.ts b/packages/changesets-renovate/src/__tests__/generate-changeset.ts index 90cd11698..0cd32207f 100644 --- a/packages/changesets-renovate/src/__tests__/generate-changeset.ts +++ b/packages/changesets-renovate/src/__tests__/generate-changeset.ts @@ -118,4 +118,37 @@ describe('generate changeset file', () => { }) expect(push).toHaveBeenCalledWith(['--force']) }) + + it('should ignore workspace package.json', async () => { + const file = 'package.json' + + // @ts-expect-error we mock at the top + // eslint-disable-next-line @typescript-eslint/no-unsafe-call + simpleGit.mockReturnValue({ + branch: () => ({ + current: 'renovate/test', + }), + diffSummary: () => ({ + files: [ + { + file, + }, + ], + }), + show: () => ` ++ "package": "version" ++ "package2": "version2" +`, + }) + + fs.readFile = jest + .fn() + .mockResolvedValue(`{"name":"packageName","workspaces":[]}`) + fs.writeFile = jest.fn() + + await run() + + expect(fs.readFile).toHaveBeenCalledWith(file, 'utf8') + expect(console.log).toHaveBeenCalledWith('No packages modified, skipping') + }) }) diff --git a/packages/changesets-renovate/src/index.ts b/packages/changesets-renovate/src/index.ts index 35a538a9f..88d5783f5 100644 --- a/packages/changesets-renovate/src/index.ts +++ b/packages/changesets-renovate/src/index.ts @@ -4,15 +4,22 @@ import fs from 'node:fs/promises' import { simpleGit } from 'simple-git' async function getPackagesNames(files: string[]): Promise { + const packages: string[] = [] + const promises = files.map(async file => { const data = JSON.parse(await fs.readFile(file, 'utf8')) as { name: string + workspaces?: string[] } - return data.name + if (!data.workspaces) { + packages.push(data.name) + } }) - return Promise.all(promises) + await Promise.all(promises) + + return packages } async function createChangeset( @@ -84,6 +91,13 @@ export async function run() { } const packageNames = await getPackagesNames(files) + + if (packageNames.length === 0) { + console.log('No packages modified, skipping') + + return + } + const shortHash = await simpleGit().revparse(['--short', 'HEAD']) const fileName = `.changeset/renovate-${shortHash.trim()}.md` const packageBumps = await getBumps(files)