From 7ae4cb51b2c295dbf55f07de032b6bbfc031203d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gordan=20Neki=C4=87?= Date: Sat, 1 Mar 2025 19:40:17 +0100 Subject: [PATCH 1/3] feat: :sparkles: introduce json output for cf pages deployment list, as it enables other tools like jq to parse the data --- packages/wrangler/src/pages/deployments.ts | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/packages/wrangler/src/pages/deployments.ts b/packages/wrangler/src/pages/deployments.ts index 76e6a6415773..e5419c562780 100644 --- a/packages/wrangler/src/pages/deployments.ts +++ b/packages/wrangler/src/pages/deployments.ts @@ -33,8 +33,13 @@ export const pagesDeploymentListCommand = createCommand({ choices: ["production", "preview"], description: "Environment type to list deployments for", }, + json: { + type: "boolean", + description: "Return output as clean JSON", + default: false, + }, }, - async handler({ projectName, environment }) { + async handler({ projectName, environment, json }) { const config = getConfigCache( PAGES_CONFIG_CACHE_FILENAME ); @@ -93,7 +98,11 @@ export const pagesDeploymentListCommand = createCommand({ account_id: accountId, }); - logger.table(data); + if (json) { + logger.log(JSON.stringify(data, null, 2)); + } else { + logger.table(data); + } metrics.sendMetricsEvent("list pages deployments"); }, }); From 43d1d665c4e551e525454823cde59721488871ce Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gordan=20Neki=C4=87?= Date: Mon, 3 Mar 2025 23:44:57 +0100 Subject: [PATCH 2/3] test: :test_tube: add test for --json flag and changeset --- .changeset/young-mammals-spend.md | 5 +++ .../__tests__/pages/deployment-list.test.ts | 45 +++++++++++++++++++ 2 files changed, 50 insertions(+) create mode 100644 .changeset/young-mammals-spend.md diff --git a/.changeset/young-mammals-spend.md b/.changeset/young-mammals-spend.md new file mode 100644 index 000000000000..e7ca3228c4cb --- /dev/null +++ b/.changeset/young-mammals-spend.md @@ -0,0 +1,5 @@ +--- +"wrangler": patch +--- + +Introduce json output flag for wrangler pages deployment list diff --git a/packages/wrangler/src/__tests__/pages/deployment-list.test.ts b/packages/wrangler/src/__tests__/pages/deployment-list.test.ts index 99999159c765..772a81b27773 100644 --- a/packages/wrangler/src/__tests__/pages/deployment-list.test.ts +++ b/packages/wrangler/src/__tests__/pages/deployment-list.test.ts @@ -55,6 +55,51 @@ describe("pages deployment list", () => { `); }); + it("should make request to list deployments and return result as json", async () => { + const deployments: Deployment[] = [ + { + id: "87bbc8fe-16be-45cd-81e0-63d722e82cdf", + url: "https://87bbc8fe.images.pages.dev", + environment: "preview", + created_on: "2021-11-17T14:52:26.133835Z", + latest_stage: { + ended_on: "2021-11-17T14:52:26.133835Z", + status: "success", + }, + deployment_trigger: { + metadata: { + branch: "main", + commit_hash: "c7649364c4cb32ad4f65b530b9424e8be5bec9d6", + }, + }, + project_name: "images", + }, + ]; + + const requests = mockDeploymentListRequest(deployments); + await runWrangler("pages deployment list --project-name=images --json"); + + expect(requests.count).toBe(1); + const output = JSON.parse(std.out); + + expect(output[0].Status).toBeTypeOf("string"); + output[0].Status = "SNAPSHOT_VALUE"; // This value would drift from snapshot if not hardcoded as is + + expect(JSON.stringify(output, null, 2)).toMatchInlineSnapshot(` + "[ + { + \\"Id\\": \\"87bbc8fe-16be-45cd-81e0-63d722e82cdf\\", + \\"Environment\\": \\"Preview\\", + \\"Branch\\": \\"main\\", + \\"Source\\": \\"c764936\\", + \\"Deployment\\": \\"https://87bbc8fe.images.pages.dev\\", + \\"Status\\": \\"SNAPSHOT_VALUE\\", + \\"Build\\": \\"https://dash.cloudflare.com/some-account-id/pages/view/images/87bbc8fe-16be-45cd-81e0-63d722e82cdf\\" + } + ]" + `); + }); + it("should pass no environment", async () => { const deployments: Deployment[] = [ { From 9f6c6b41006bb3803326fcfb4d5e33a0702602a5 Mon Sep 17 00:00:00 2001 From: Pete Bacon Darwin Date: Mon, 21 Jul 2025 14:37:37 +0100 Subject: [PATCH 3/3] Update .changeset/young-mammals-spend.md --- .changeset/young-mammals-spend.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.changeset/young-mammals-spend.md b/.changeset/young-mammals-spend.md index e7ca3228c4cb..00b977a5c4be 100644 --- a/.changeset/young-mammals-spend.md +++ b/.changeset/young-mammals-spend.md @@ -1,5 +1,5 @@ --- -"wrangler": patch +"wrangler": minor --- Introduce json output flag for wrangler pages deployment list