diff --git a/packages/wrangler/src/__tests__/r2.test.ts b/packages/wrangler/src/__tests__/r2.test.ts index c414f7e8ec130..683868ab2911c 100644 --- a/packages/wrangler/src/__tests__/r2.test.ts +++ b/packages/wrangler/src/__tests__/r2.test.ts @@ -5,6 +5,7 @@ import { actionsForEventCategories } from "../r2/helpers"; import { endEventLoop } from "./helpers/end-event-loop"; import { mockAccountId, mockApiToken } from "./helpers/mock-account-id"; import { mockConsoleMethods } from "./helpers/mock-console"; +import { mockConfirm } from "./helpers/mock-dialogs"; import { useMockIsTTY } from "./helpers/mock-istty"; import { createFetchResult, msw, mswR2handlers } from "./helpers/msw"; import { runInTempDir } from "./helpers/run-in-tmp"; @@ -1581,7 +1582,7 @@ describe("r2", () => { ) ); await runWrangler( - `r2 bucket domain remove ${bucketName} --domain ${domainName}` + `r2 bucket domain remove ${bucketName} --domain ${domainName} --force` ); expect(std.out).toMatchInlineSnapshot(` "Removing custom domain 'example.com' from bucket 'my-bucket'... diff --git a/packages/wrangler/src/r2/domain.ts b/packages/wrangler/src/r2/domain.ts index 7e5a2e2c19df4..f740f82762cf7 100644 --- a/packages/wrangler/src/r2/domain.ts +++ b/packages/wrangler/src/r2/domain.ts @@ -1,4 +1,5 @@ import { readConfig } from "../config"; +import { confirm } from "../dialogs"; import { logger } from "../logger"; import { printWranglerBanner } from "../update-check"; import { requireAuth } from "../user"; @@ -142,6 +143,12 @@ export function RemoveOptions(yargs: CommonYargsArgv) { alias: "J", requiresArg: true, type: "string", + }) + .option("force", { + describe: "Skip confirmation", + type: "boolean", + alias: "y", + default: false, }); } @@ -152,8 +159,17 @@ export async function RemoveHandler( const config = readConfig(args.config, args); const accountId = await requireAuth(config); - const { bucket, domain, jurisdiction } = args; + const { bucket, domain, jurisdiction, force } = args; + if (!force) { + const confirmedRemoval = await confirm( + `Are you sure you want to remove the custom domain '${domain}' from bucket '${bucket}'? Your bucket will no longer be available from 'https://${domain}'` + ); + if (!confirmedRemoval) { + logger.log("Removal cancelled."); + return; + } + } logger.log(`Removing custom domain '${domain}' from bucket '${bucket}'...`); await removeCustomDomainFromBucket(accountId, bucket, domain, jurisdiction);