From 4de5b31cccf374775bc29dc8d097fe9718ff917a Mon Sep 17 00:00:00 2001 From: Silouan Wright Date: Thu, 10 Apr 2025 14:06:54 -0500 Subject: [PATCH 1/2] feat(changesets-renovate): filter out private packages --- .changeset/clean-tigers-stalk.md | 5 ++ .../src/__tests__/generate-changeset.test.ts | 87 +++++++++++++++++++ packages/changesets-renovate/src/index.ts | 7 ++ 3 files changed, 99 insertions(+) create mode 100644 .changeset/clean-tigers-stalk.md diff --git a/.changeset/clean-tigers-stalk.md b/.changeset/clean-tigers-stalk.md new file mode 100644 index 000000000..7d36c4f25 --- /dev/null +++ b/.changeset/clean-tigers-stalk.md @@ -0,0 +1,5 @@ +--- +"@scaleway/changesets-renovate": minor +--- + +filter out private packages from being published diff --git a/packages/changesets-renovate/src/__tests__/generate-changeset.test.ts b/packages/changesets-renovate/src/__tests__/generate-changeset.test.ts index ef19e1f0e..55bce72c3 100644 --- a/packages/changesets-renovate/src/__tests__/generate-changeset.test.ts +++ b/packages/changesets-renovate/src/__tests__/generate-changeset.test.ts @@ -451,4 +451,91 @@ describe('generate changeset file', () => { expect(fs.readFile).toHaveBeenCalledWith(file, 'utf8') expect(console.log).toHaveBeenCalledWith('No packages modified, skipping') }) + + it('should ignore private packages', async () => { + const file = 'test/package.json' + + mockSimpleGit.mockReturnValue({ + ...defaultGitValues, + branch: () => ({ + current: 'renovate/test', + }), + diffSummary: () => ({ + files: [ + { + file, + }, + ], + }), + show: () => ` ++ "package": "version" ++ "package2": "version2" +`, + }) + + fs.readFile = vi + .fn() + .mockResolvedValueOnce(`{}`) + .mockResolvedValueOnce(`{"name":"packageName","version":"1.0.0","private":true}`) + fs.writeFile = vi.fn() + + await run() + + expect(fs.readFile).toHaveBeenCalledWith(file, 'utf8') + expect(console.log).toHaveBeenCalledWith('No packages modified, skipping') + }) + + it('should include only non-private packages in changeset', async () => { + const rev = 'test' + const fileName = `.changeset/renovate-${rev}.md` + const privateFile = 'private/package.json' + const publicFile = 'public/package.json' + const revparse = vi.fn().mockReturnValue(rev) + const add = vi.fn() + const commit = vi.fn() + const push = vi.fn() + + mockSimpleGit.mockReturnValue({ + branch: () => ({ + current: 'renovate/test', + }), + diffSummary: () => ({ + files: [ + { + file: privateFile, + }, + { + file: publicFile, + }, + ], + }), + show: () => ` ++ "package": "version" ++ "package2": "version2" +`, + revparse, + add, + commit, + push, + }) + + fs.readFile = vi + .fn() + .mockResolvedValueOnce(`{}`) + .mockResolvedValueOnce(`{"name":"privatePackage","version":"1.0.0","private":true}`) + .mockResolvedValueOnce(`{"name":"publicPackage","version":"1.0.0"}`) + fs.writeFile = vi.fn() + + await run() + + expect(fs.readFile).toHaveBeenCalledWith(privateFile, 'utf8') + expect(fs.readFile).toHaveBeenCalledWith(publicFile, 'utf8') + expect(fs.writeFile).toHaveBeenCalled() + // Only the public package should be included in the changeset + expect(fs.writeFile.mock.calls[0][1]).toContain("'publicPackage': patch") + expect(fs.writeFile.mock.calls[0][1]).not.toContain("'privatePackage': patch") + expect(add).toHaveBeenCalledWith(fileName) + expect(commit).toHaveBeenCalledWith(`chore: add changeset renovate-${rev}`) + expect(push).toHaveBeenCalledTimes(1) + }) }) diff --git a/packages/changesets-renovate/src/index.ts b/packages/changesets-renovate/src/index.ts index 98eaa670e..9fcd17baf 100644 --- a/packages/changesets-renovate/src/index.ts +++ b/packages/changesets-renovate/src/index.ts @@ -37,6 +37,12 @@ async function getPackagesNames(files: string[]): Promise { name: string workspaces?: string[] version?: string + private?: boolean // Add this type definition + } + + // Skip if the package is private + if (data.private) { + return } if (shouldIgnorePackage(data.name, ignoredPackages)) { @@ -54,6 +60,7 @@ async function getPackagesNames(files: string[]): Promise { return packages } + async function createChangeset( fileName: string, packageBumps: Map, From d4baef6691dc0f2f1eb70cb146986492e2651435 Mon Sep 17 00:00:00 2001 From: Silouan Wright Date: Thu, 10 Apr 2025 14:18:10 -0500 Subject: [PATCH 2/2] remove comments --- packages/changesets-renovate/src/index.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/packages/changesets-renovate/src/index.ts b/packages/changesets-renovate/src/index.ts index 9fcd17baf..570523928 100644 --- a/packages/changesets-renovate/src/index.ts +++ b/packages/changesets-renovate/src/index.ts @@ -37,10 +37,9 @@ async function getPackagesNames(files: string[]): Promise { name: string workspaces?: string[] version?: string - private?: boolean // Add this type definition + private?: boolean } - // Skip if the package is private if (data.private) { return }