diff --git a/.github/workflows/miniflare-dependabot-versioning-prs.yml b/.github/workflows/dependabot-versioning-prs-add-changesets.yml similarity index 82% rename from .github/workflows/miniflare-dependabot-versioning-prs.yml rename to .github/workflows/dependabot-versioning-prs-add-changesets.yml index b217f1f2552f..1f6b07f353d3 100644 --- a/.github/workflows/miniflare-dependabot-versioning-prs.yml +++ b/.github/workflows/dependabot-versioning-prs-add-changesets.yml @@ -1,8 +1,9 @@ -name: "Miniflare - Generate changesets for dependabot PRs" +name: "Generate changesets for dependabot PRs" on: pull_request_target: paths: - "packages/miniflare/package.json" + - "packages/quick-edit-extension/package.json" jobs: generate-changeset: @@ -25,5 +26,5 @@ jobs: git config --global user.email wrangler@cloudflare.com git config --global user.name 'Wrangler automated PR updater' - - name: Generate Miniflare changesets - run: node -r esbuild-register tools/dependabot/generate-dependabot-pr-changesets.ts ${{ github.event.number }} miniflare packages/miniflare/package.json dependabot-update + - name: Generate Miniflare changeset + run: node -r esbuild-register tools/dependabot/generate-dependabot-pr-changesets.ts ${{ github.event.number }} miniflare quick-edit-extension diff --git a/packages/quick-edit/package.json b/packages/quick-edit/package.json index d10cf36067ad..5b5a404404ed 100644 --- a/packages/quick-edit/package.json +++ b/packages/quick-edit/package.json @@ -23,6 +23,7 @@ "devDependencies": { "@cloudflare/workers-tsconfig": "workspace:*", "concurrently": "^8.2.2", + "quick-edit-extension": "workspace:*", "tsx": "^3.12.8", "wrangler": "workspace:*" }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 3ef18db71228..3ae99153d026 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -6,6 +6,12 @@ settings: catalogs: default: + '@vitest/runner': + specifier: ~2.1.1 + version: 2.1.1 + '@vitest/snapshot': + specifier: ~2.1.1 + version: 2.1.1 vitest: specifier: ~2.1.1 version: 2.1.1 @@ -1299,6 +1305,9 @@ importers: concurrently: specifier: ^8.2.2 version: 8.2.2 + quick-edit-extension: + specifier: workspace:* + version: link:../quick-edit-extension tsx: specifier: ^3.12.8 version: 3.12.10 diff --git a/tools/dependabot/__tests__/generate-dependabot-pr-changesets.test.ts b/tools/dependabot/__tests__/generate-dependabot-pr-changesets.test.ts index a21724d6bff1..24a24bd0250c 100644 --- a/tools/dependabot/__tests__/generate-dependabot-pr-changesets.test.ts +++ b/tools/dependabot/__tests__/generate-dependabot-pr-changesets.test.ts @@ -3,10 +3,11 @@ import { writeFileSync } from "fs"; import dedent from "ts-dedent"; import { beforeEach, describe, it, vitest } from "vitest"; import { - commitAndPush, generateChangesetHeader, generateCommitMessage, getPackageJsonDiff, + gitCommit, + gitPush, parseDiffForChanges, writeChangeSet, } from "../generate-dependabot-pr-changesets"; @@ -157,10 +158,10 @@ describe("writeChangeSet()", () => { | some-package | ^0.0.1 | ^0.0.2 | | @namespace/some-package | 1.3.4 | 1.4.5 | `; - writeChangeSet("some-prefix", "1234", header, body); + writeChangeSet("1234", "pkgName", header, body); expect(writeFileSync).toHaveBeenCalledOnce(); expect((writeFileSync as Mock).mock.lastCall?.[0]).toMatchInlineSnapshot( - `".changeset/some-prefix-1234.md"` + `".changeset/dependabot-update-pkgName-1234.md"` ); expect((writeFileSync as Mock).mock.lastCall?.[1]).toMatchInlineSnapshot(` "--- @@ -190,7 +191,8 @@ describe("commitAndPush()", () => { | ----------------------- | ------ | ------ | | some-package | ^0.0.1 | ^0.0.2 | | @namespace/some-package | 1.3.4 | 1.4.5 |`; - commitAndPush(commitMessage); + gitCommit(commitMessage); + gitPush(); expect(spawnSync).toHaveBeenCalledTimes(3); expect((spawnSync as Mock).mock.calls[0]).toMatchInlineSnapshot(` [ @@ -242,8 +244,8 @@ describe("commitAndPush()", () => { args[0] === "push" ? new Error("Failed to push") : undefined; return { output: [], error }; }); - expect(() => - commitAndPush("commit message") - ).toThrowErrorMatchingInlineSnapshot(`[Error: Failed to push]`); + expect(() => gitPush()).toThrowErrorMatchingInlineSnapshot( + `[Error: Failed to push]` + ); }); }); diff --git a/tools/dependabot/generate-dependabot-pr-changesets.ts b/tools/dependabot/generate-dependabot-pr-changesets.ts index 1a31693bb5b1..f5c58d5ec64a 100644 --- a/tools/dependabot/generate-dependabot-pr-changesets.ts +++ b/tools/dependabot/generate-dependabot-pr-changesets.ts @@ -24,9 +24,7 @@ if (require.main === module) { type Args = { prNumber: string; - packageName: string; - packageJSONPath: string; - changesetPrefix: string; + packageNames: string[]; }; function processArgs(): Args { @@ -48,33 +46,30 @@ function processArgs(): Args { } return { prNumber: args[0], - packageName: args[1], - packageJSONPath: args[2], - changesetPrefix: args[3], + packageNames: args.slice(1), }; } -function main({ - prNumber, - packageName, - packageJSONPath, - changesetPrefix, -}: Args): void { - const diffLines = getPackageJsonDiff(resolve(packageJSONPath)); - const changes = parseDiffForChanges(diffLines); - if (changes.size === 0) { - console.warn(dedent` +function main({ prNumber, packageNames }: Args): void { + for (const packageName of packageNames) { + const packageJSONPath = `packages/${packageName}/package.json`; + const diffLines = getPackageJsonDiff(resolve(packageJSONPath)); + const changes = parseDiffForChanges(diffLines); + if (changes.size === 0) { + console.warn(dedent` WARN: No dependency changes detected for "${packageName}". `); - return; - } - const changesetHeader = generateChangesetHeader(packageName); - const commitMessage = generateCommitMessage(packageName, changes); - console.log(dedent` + return; + } + const changesetHeader = generateChangesetHeader(packageName); + const commitMessage = generateCommitMessage(packageName, changes); + console.log(dedent` INFO: Writing changeset with the following commit message ${commitMessage}`); - writeChangeSet(changesetPrefix, prNumber, changesetHeader, commitMessage); - commitAndPush(commitMessage); + writeChangeSet(prNumber, packageName, changesetHeader, commitMessage); + gitCommit(commitMessage); + } + gitPush(); } export function getPackageJsonDiff(packageJSONPath: string): string[] { @@ -158,20 +153,22 @@ export function generateCommitMessage( } export function writeChangeSet( - changesetPrefix: string, prNumber: string, + packageName: string, changesetHeader: string, commitMessage: string ): void { writeFileSync( - `.changeset/${changesetPrefix}-${prNumber}.md`, + `.changeset/dependabot-update-${packageName}-${prNumber}.md`, changesetHeader + "\n\n" + commitMessage + "\n" ); } -export function commitAndPush(commitMessage: string): void { +export function gitCommit(commitMessage: string): void { executeCommand("git", ["add", ".changeset"]); executeCommand("git", ["commit", "-m", commitMessage]); +} +export function gitPush(): void { executeCommand("git", ["push"]); }