From 1dd9f7eeea4df9141c766e52c31828cf201ab71b Mon Sep 17 00:00:00 2001 From: Pete Bacon Darwin Date: Thu, 2 May 2024 16:55:18 +0100 Subject: [PATCH] fix: suggest trying to update Wrangler if there is a newer one available after an unexpected error (#5746) --- .changeset/stale-parrots-explode.md | 5 ++++ packages/wrangler/src/__tests__/index.test.ts | 20 ++++++++++++++++ packages/wrangler/src/index.ts | 23 +++++++++++++++---- 3 files changed, 43 insertions(+), 5 deletions(-) create mode 100644 .changeset/stale-parrots-explode.md diff --git a/.changeset/stale-parrots-explode.md b/.changeset/stale-parrots-explode.md new file mode 100644 index 00000000000..ef7431e81d9 --- /dev/null +++ b/.changeset/stale-parrots-explode.md @@ -0,0 +1,5 @@ +--- +"wrangler": patch +--- + +fix: suggest trying to update Wrangler if there is a newer one available after an unexpected error diff --git a/packages/wrangler/src/__tests__/index.test.ts b/packages/wrangler/src/__tests__/index.test.ts index 4db9ad5a081..06fdebcfada 100644 --- a/packages/wrangler/src/__tests__/index.test.ts +++ b/packages/wrangler/src/__tests__/index.test.ts @@ -1,4 +1,6 @@ +import { logPossibleBugMessage } from ".."; import { getPackageManager } from "../package-manager"; +import { updateCheck } from "../update-check"; import { endEventLoop } from "./helpers/end-event-loop"; import { mockConsoleMethods } from "./helpers/mock-console"; import { runInTempDir } from "./helpers/run-in-tmp"; @@ -279,4 +281,22 @@ describe("wrangler", () => { --dry-run: exiting now." `); }); + + describe("logPossibleBugMessage()", () => { + it("should display a 'possible bug' message", async () => { + await logPossibleBugMessage(); + expect(std.out).toMatchInlineSnapshot( + `"If you think this is a bug then please create an issue at https://github.com/cloudflare/workers-sdk/issues/new/choose"` + ); + }); + + it("should display a 'try updating' message if there is one available", async () => { + (updateCheck as jest.Mock).mockImplementation(async () => "123.123.123"); + await logPossibleBugMessage(); + expect(std.out).toMatchInlineSnapshot(` + "If you think this is a bug then please create an issue at https://github.com/cloudflare/workers-sdk/issues/new/choose + Note that there is a newer version of Wrangler available (123.123.123). Consider checking whether upgrading resolves this error." + `); + }); + }); }); diff --git a/packages/wrangler/src/index.ts b/packages/wrangler/src/index.ts index 985300623ea..d0d8d17a347 100644 --- a/packages/wrangler/src/index.ts +++ b/packages/wrangler/src/index.ts @@ -58,7 +58,7 @@ import { import { tailHandler, tailOptions } from "./tail"; import registerTriggersSubcommands from "./triggers"; import { typesHandler, typesOptions } from "./type-generation"; -import { printWranglerBanner } from "./update-check"; +import { printWranglerBanner, updateCheck } from "./update-check"; import { getAuthFromEnv, listScopes, @@ -839,10 +839,7 @@ export async function main(argv: string[]): Promise { } else { logger.error(e instanceof Error ? e.message : e); if (!(e instanceof UserError)) { - logger.log( - `${fgGreenColor}%s${resetColor}`, - "If you think this is a bug then please create an issue at https://github.com/cloudflare/workers-sdk/issues/new/choose" - ); + await logPossibleBugMessage(); } } @@ -910,4 +907,20 @@ export function getDevCompatibilityDate( return compatibilityDate ?? currentDate; } +/** + * Write a message to the log that tells the user what they might do after we have reported an unexpected error. + */ +export async function logPossibleBugMessage() { + logger.log( + `${fgGreenColor}%s${resetColor}`, + "If you think this is a bug then please create an issue at https://github.com/cloudflare/workers-sdk/issues/new/choose" + ); + const latestVersion = await updateCheck(); + if (latestVersion) { + logger.log( + `Note that there is a newer version of Wrangler available (${latestVersion}). Consider checking whether upgrading resolves this error.` + ); + } +} + export { printWranglerBanner };