From a29a41ca68f91094cca921aa763aaf0da77f73a1 Mon Sep 17 00:00:00 2001 From: Andy Jessop Date: Mon, 9 Dec 2024 12:03:50 +0100 Subject: [PATCH] chore: remove getConfig helper function, centralising logic surrounding how to find the config file given various command line args (#7477) --- fixtures/import-npm/package-lock.json | 6 +-- .../src/__tests__/configuration.test.ts | 4 +- .../src/api/integrations/platform/index.ts | 5 ++- packages/wrangler/src/api/pages/deploy.ts | 2 +- .../api/startDevWorker/ConfigController.ts | 3 +- packages/wrangler/src/cloudchamber/common.ts | 14 +++---- .../wrangler/src/config/config-helpers.ts | 36 ++++++++++++++++ packages/wrangler/src/config/index.ts | 41 +++++-------------- .../src/core/register-yargs-command.ts | 2 +- packages/wrangler/src/d1/execute.ts | 2 +- packages/wrangler/src/d1/export.ts | 2 +- packages/wrangler/src/delete.ts | 8 +--- packages/wrangler/src/deploy/index.ts | 9 ++-- packages/wrangler/src/deployments.ts | 2 +- packages/wrangler/src/dev.ts | 11 ++--- packages/wrangler/src/dispatch-namespace.ts | 10 ++--- packages/wrangler/src/hyperdrive/create.ts | 2 +- packages/wrangler/src/hyperdrive/delete.ts | 2 +- packages/wrangler/src/hyperdrive/get.ts | 2 +- packages/wrangler/src/hyperdrive/list.ts | 2 +- packages/wrangler/src/hyperdrive/update.ts | 2 +- packages/wrangler/src/index.ts | 4 +- packages/wrangler/src/init.ts | 2 +- packages/wrangler/src/kv/index.ts | 18 ++++---- packages/wrangler/src/pages/build-env.ts | 6 ++- packages/wrangler/src/pages/build.ts | 6 ++- packages/wrangler/src/pages/deploy.ts | 5 ++- .../wrangler/src/pages/deployment-tails.ts | 2 +- packages/wrangler/src/pages/dev.ts | 2 +- packages/wrangler/src/pages/secret/index.ts | 9 ++-- packages/wrangler/src/pipelines/index.ts | 10 ++--- .../wrangler/src/pubsub/pubsub-commands.ts | 28 ++++++------- .../cli/commands/consumer/http-pull/add.ts | 2 +- .../cli/commands/consumer/http-pull/remove.ts | 2 +- .../cli/commands/consumer/worker/add.ts | 2 +- .../cli/commands/consumer/worker/remove.ts | 2 +- .../src/queues/cli/commands/create.ts | 2 +- .../src/queues/cli/commands/delete.ts | 2 +- .../wrangler/src/queues/cli/commands/info.ts | 2 +- .../wrangler/src/queues/cli/commands/list.ts | 2 +- packages/wrangler/src/r2/object.ts | 2 +- packages/wrangler/src/secret/index.ts | 8 ++-- packages/wrangler/src/tail/index.ts | 2 +- packages/wrangler/src/triggers/index.ts | 2 +- .../wrangler/src/type-generation/index.ts | 7 ++-- packages/wrangler/src/vectorize/create.ts | 2 +- .../src/vectorize/createMetadataIndex.ts | 2 +- packages/wrangler/src/vectorize/delete.ts | 2 +- .../wrangler/src/vectorize/deleteByIds.ts | 2 +- .../src/vectorize/deleteMetadataIndex.ts | 2 +- packages/wrangler/src/vectorize/get.ts | 2 +- packages/wrangler/src/vectorize/getByIds.ts | 2 +- packages/wrangler/src/vectorize/info.ts | 2 +- packages/wrangler/src/vectorize/insert.ts | 2 +- packages/wrangler/src/vectorize/list.ts | 2 +- .../src/vectorize/listMetadataIndex.ts | 2 +- packages/wrangler/src/vectorize/query.ts | 2 +- packages/wrangler/src/vectorize/upsert.ts | 2 +- .../wrangler/src/versions/deployments/list.ts | 4 +- .../src/versions/deployments/status.ts | 4 +- .../wrangler/src/versions/rollback/index.ts | 4 +- .../wrangler/src/versions/secrets/bulk.ts | 6 +-- .../wrangler/src/versions/secrets/delete.ts | 6 +-- .../wrangler/src/versions/secrets/list.ts | 7 +--- packages/wrangler/src/versions/secrets/put.ts | 6 +-- packages/wrangler/src/versions/upload.ts | 6 +-- .../wrangler/src/versions/utils/config.ts | 11 ----- 67 files changed, 183 insertions(+), 193 deletions(-) create mode 100644 packages/wrangler/src/config/config-helpers.ts delete mode 100644 packages/wrangler/src/versions/utils/config.ts diff --git a/fixtures/import-npm/package-lock.json b/fixtures/import-npm/package-lock.json index 5a9e9df90d13..420ebf42c509 100644 --- a/fixtures/import-npm/package-lock.json +++ b/fixtures/import-npm/package-lock.json @@ -35,7 +35,7 @@ "selfsigned": "^2.0.1", "source-map": "^0.6.1", "unenv": "npm:unenv-nightly@2.0.0-20241204-140205-a5d5190", - "workerd": "1.20241106.2", + "workerd": "1.20241205.0", "xxhash-wasm": "^1.0.1" }, "bin": { @@ -48,7 +48,7 @@ "@cloudflare/pages-shared": "workspace:^", "@cloudflare/types": "6.18.4", "@cloudflare/workers-tsconfig": "workspace:*", - "@cloudflare/workers-types": "^4.20241106.0", + "@cloudflare/workers-types": "^4.20241205.0", "@cspotcode/source-map-support": "0.8.1", "@iarna/toml": "^3.0.0", "@microsoft/api-extractor": "^7.47.0", @@ -123,7 +123,7 @@ "fsevents": "~2.3.2" }, "peerDependencies": { - "@cloudflare/workers-types": "^4.20241106.0" + "@cloudflare/workers-types": "^4.20241205.0" }, "peerDependenciesMeta": { "@cloudflare/workers-types": { diff --git a/packages/wrangler/src/__tests__/configuration.test.ts b/packages/wrangler/src/__tests__/configuration.test.ts index cc46de720365..3cf3ffe89a1c 100644 --- a/packages/wrangler/src/__tests__/configuration.test.ts +++ b/packages/wrangler/src/__tests__/configuration.test.ts @@ -19,7 +19,7 @@ describe("readConfig()", () => { main: "index.py", compatibility_flags: ["python_workers"], }); - const config = readConfig("wrangler.toml", {}); + const config = readConfig({ config: "wrangler.toml" }); expect(config.rules).toMatchInlineSnapshot(` Array [ Object { @@ -36,7 +36,7 @@ describe("readConfig()", () => { main: "index.py", }); try { - readConfig("wrangler.toml", {}); + readConfig({ config: "wrangler.toml" }); expect.fail(); } catch (e) { expect(e).toMatchInlineSnapshot( diff --git a/packages/wrangler/src/api/integrations/platform/index.ts b/packages/wrangler/src/api/integrations/platform/index.ts index 96f39951ffed..dfc91ca65f76 100644 --- a/packages/wrangler/src/api/integrations/platform/index.ts +++ b/packages/wrangler/src/api/integrations/platform/index.ts @@ -103,7 +103,8 @@ export async function getPlatformProxy< ): Promise> { const env = options.environment; - const rawConfig = readConfig(options.configPath, { + const rawConfig = readConfig({ + config: options.configPath, env, }); @@ -263,7 +264,7 @@ export function unstable_getMiniflareWorkerOptions( ): Unstable_MiniflareWorkerOptions { const config = typeof configOrConfigPath === "string" - ? readConfig(configOrConfigPath, { env }) + ? readConfig({ config: configOrConfigPath, env }) : configOrConfigPath; const modulesRules: ModuleRule[] = config.rules diff --git a/packages/wrangler/src/api/pages/deploy.ts b/packages/wrangler/src/api/pages/deploy.ts index 1981864579f1..0ed97aa4ba7d 100644 --- a/packages/wrangler/src/api/pages/deploy.ts +++ b/packages/wrangler/src/api/pages/deploy.ts @@ -160,7 +160,7 @@ export async function deploy({ let config: Config | undefined; try { - config = readPagesConfig(undefined, { ...args, env }); + config = readPagesConfig({ ...args, env }); } catch (err) { if ( !( diff --git a/packages/wrangler/src/api/startDevWorker/ConfigController.ts b/packages/wrangler/src/api/startDevWorker/ConfigController.ts index 43f742642866..2394f59b0450 100644 --- a/packages/wrangler/src/api/startDevWorker/ConfigController.ts +++ b/packages/wrangler/src/api/startDevWorker/ConfigController.ts @@ -414,7 +414,8 @@ export class ConfigController extends Controller { const signal = this.#abortController.signal; this.latestInput = input; try { - const fileConfig = readConfig(input.config, { + const fileConfig = readConfig({ + config: input.config, env: input.env, "dispatch-namespace": undefined, "legacy-env": !input.legacy?.enableServiceEnvironments, diff --git a/packages/wrangler/src/cloudchamber/common.ts b/packages/wrangler/src/cloudchamber/common.ts index e5f1e9269a2d..efa75a43aaa4 100644 --- a/packages/wrangler/src/cloudchamber/common.ts +++ b/packages/wrangler/src/cloudchamber/common.ts @@ -97,19 +97,19 @@ export function handleFailure< ? K : never, >( - cb: (t: CommandArgumentsObject, config: Config) => Promise + cb: (args: CommandArgumentsObject, config: Config) => Promise ): ( - t: CommonYargsOptions & + args: CommonYargsOptions & CommandArgumentsObject & CommonCloudchamberConfiguration ) => Promise { - return async (t) => { + return async (args) => { try { - const config = readConfig(t.config, t); - await fillOpenAPIConfiguration(config, t.json); - await cb(t, config); + const config = readConfig(args); + await fillOpenAPIConfiguration(config, args.json); + await cb(args, config); } catch (err) { - if (!t.json) { + if (!args.json) { throw err; } diff --git a/packages/wrangler/src/config/config-helpers.ts b/packages/wrangler/src/config/config-helpers.ts new file mode 100644 index 000000000000..15e5247f6c6f --- /dev/null +++ b/packages/wrangler/src/config/config-helpers.ts @@ -0,0 +1,36 @@ +import path from "path"; +import { findUpSync } from "find-up"; + +/** + * Resolve the path to the configuration file, given the `config` and `script` optional command line arguments. + * `config` takes precedence, then `script`, then we just use the cwd. + */ +export function resolveWranglerConfigPath({ + config, + script, +}: { + config?: string; + script?: string; +}): string | undefined { + if (config !== undefined) { + return config; + } + + const leafPath = script !== undefined ? path.dirname(script) : process.cwd(); + + return findWranglerConfig(leafPath); +} + +/** + * Find the wrangler config file by searching up the file-system + * from the current working directory. + */ +export function findWranglerConfig( + referencePath: string = process.cwd() +): string | undefined { + return ( + findUpSync(`wrangler.json`, { cwd: referencePath }) ?? + findUpSync(`wrangler.jsonc`, { cwd: referencePath }) ?? + findUpSync(`wrangler.toml`, { cwd: referencePath }) + ); +} diff --git a/packages/wrangler/src/config/index.ts b/packages/wrangler/src/config/index.ts index 2a931a5c04fe..c7da666d4859 100644 --- a/packages/wrangler/src/config/index.ts +++ b/packages/wrangler/src/config/index.ts @@ -2,12 +2,12 @@ import fs from "node:fs"; import TOML from "@iarna/toml"; import chalk from "chalk"; import dotenv from "dotenv"; -import { findUpSync } from "find-up"; import { FatalError, UserError } from "../errors"; import { getFlag } from "../experimental-flags"; import { logger } from "../logger"; import { EXIT_CODE_INVALID_PAGES_CONFIG } from "../pages/errors"; import { parseJSONC, parseTOML, readFileSync } from "../parse"; +import { resolveWranglerConfigPath } from "./config-helpers"; import { isPagesConfig, normalizeAndValidateConfig } from "./validation"; import { validatePagesConfig } from "./validation-pages"; import type { CfWorkerInit } from "../deployment-bundle/worker"; @@ -66,25 +66,23 @@ export function formatConfigSnippet( } } -type ReadConfigCommandArgs = NormalizeAndValidateConfigArgs; +type ReadConfigCommandArgs = NormalizeAndValidateConfigArgs & { + config?: string; + script?: string; +}; /** * Get the Wrangler configuration; read it from the give `configPath` if available. */ export function readConfig( - configPath: string | undefined, args: ReadConfigCommandArgs, options?: { hideWarnings?: boolean } ): Config; export function readConfig( - configPath: string | undefined, args: ReadConfigCommandArgs, { hideWarnings = false }: { hideWarnings?: boolean } = {} ): Config { - if (!configPath) { - configPath = findWranglerConfig(process.cwd()); - } - + const configPath = resolveWranglerConfigPath(args); const rawConfig = readRawConfig(configPath); const { config, diagnostics } = normalizeAndValidateConfig( @@ -104,13 +102,10 @@ export function readConfig( } export function readPagesConfig( - configPath: string | undefined, args: ReadConfigCommandArgs, { hideWarnings = false }: { hideWarnings?: boolean } = {} ): Omit & { pages_build_output_dir: string } { - if (!configPath) { - configPath = findWranglerConfig(process.cwd()); - } + const configPath = resolveWranglerConfigPath(args); let rawConfig: RawConfig; try { @@ -173,20 +168,6 @@ export const readRawConfig = (configPath: string | undefined): RawConfig => { return {}; }; -/** - * Find the wrangler config file by searching up the file-system - * from the current working directory. - */ -export function findWranglerConfig( - referencePath: string = process.cwd() -): string | undefined { - return ( - findUpSync(`wrangler.json`, { cwd: referencePath }) ?? - findUpSync(`wrangler.jsonc`, { cwd: referencePath }) ?? - findUpSync(`wrangler.toml`, { cwd: referencePath }) - ); -} - function addLocalSuffix( id: string | symbol | undefined, local: boolean = false @@ -660,12 +641,12 @@ export function printBindings( export function withConfig( handler: ( - t: OnlyCamelCase & { config: Config } + args: OnlyCamelCase & { config: Config } ) => Promise, - options?: Parameters[2] + options?: Parameters[1] ) { - return (t: OnlyCamelCase) => { - return handler({ ...t, config: readConfig(t.config, t, options) }); + return (args: OnlyCamelCase) => { + return handler({ ...args, config: readConfig(args, options) }); }; } diff --git a/packages/wrangler/src/core/register-yargs-command.ts b/packages/wrangler/src/core/register-yargs-command.ts index f5d9c77f3068..b8514083c1dc 100644 --- a/packages/wrangler/src/core/register-yargs-command.ts +++ b/packages/wrangler/src/core/register-yargs-command.ts @@ -82,7 +82,7 @@ function createHandler(def: CommandDefinition) { await def.handler(args, { config: def.behaviour?.provideConfig ?? true - ? readConfig(args.config, args, { + ? readConfig(args, { hideWarnings: !(def.behaviour?.printConfigWarnings ?? true), }) : defaultWranglerConfig, diff --git a/packages/wrangler/src/d1/execute.ts b/packages/wrangler/src/d1/execute.ts index bea1bd4fe49d..60a673843ef3 100644 --- a/packages/wrangler/src/d1/execute.ts +++ b/packages/wrangler/src/d1/execute.ts @@ -111,7 +111,7 @@ export const Handler = async (args: HandlerOptions): Promise => { } await printWranglerBanner(); - const config = readConfig(args.config, args); + const config = readConfig(args); if (file && command) { throw createFatalError( diff --git a/packages/wrangler/src/d1/export.ts b/packages/wrangler/src/d1/export.ts index f55d40e30bfc..d83be9b30bd6 100644 --- a/packages/wrangler/src/d1/export.ts +++ b/packages/wrangler/src/d1/export.ts @@ -74,7 +74,7 @@ type HandlerOptions = StrictYargsOptionsToInterface; export const Handler = async (args: HandlerOptions): Promise => { const { local, remote, name, output, schema, data, table } = args; await printWranglerBanner(); - const config = readConfig(args.config, args); + const config = readConfig(args); if (!local && !remote) { throw new UserError(`You must specify either --local or --remote`); diff --git a/packages/wrangler/src/delete.ts b/packages/wrangler/src/delete.ts index f2e56778d643..87b76bf44e26 100644 --- a/packages/wrangler/src/delete.ts +++ b/packages/wrangler/src/delete.ts @@ -1,7 +1,6 @@ import assert from "assert"; -import path from "path"; import { fetchResult } from "./cfetch"; -import { configFileName, findWranglerConfig, readConfig } from "./config"; +import { configFileName, readConfig } from "./config"; import { confirm } from "./dialogs"; import { UserError } from "./errors"; import { deleteKVNamespace, listKVNamespaces } from "./kv/helpers"; @@ -94,10 +93,7 @@ type DeleteArgs = StrictYargsOptionsToInterface; export async function deleteHandler(args: DeleteArgs) { await printWranglerBanner(); - const configPath = - args.config || - (args.script && findWranglerConfig(path.dirname(args.script))); - const config = readConfig(configPath, args); + const config = readConfig(args); if (config.pages_build_output_dir) { throw new UserError( "It looks like you've run a Workers-specific command in a Pages project.\n" + diff --git a/packages/wrangler/src/deploy/index.ts b/packages/wrangler/src/deploy/index.ts index 5189e39c74d6..22627f2e9166 100644 --- a/packages/wrangler/src/deploy/index.ts +++ b/packages/wrangler/src/deploy/index.ts @@ -1,7 +1,8 @@ import assert from "node:assert"; import path from "node:path"; import { getAssetsOptions, validateAssetsArgsAndConfig } from "../assets"; -import { configFileName, findWranglerConfig, readConfig } from "../config"; +import { configFileName, readConfig } from "../config"; +import { resolveWranglerConfigPath } from "../config/config-helpers"; import { getEntry } from "../deployment-bundle/entry"; import { UserError } from "../errors"; import { run } from "../experimental-flags"; @@ -262,11 +263,9 @@ async function deployWorker(args: DeployArgs) { ); } - const configPath = - args.config || - (args.script && findWranglerConfig(path.dirname(args.script))); + const configPath = resolveWranglerConfigPath(args); const projectRoot = configPath && path.dirname(configPath); - const config = readConfig(configPath, args); + const config = readConfig(args); if (config.pages_build_output_dir) { throw new UserError( "It looks like you've run a Workers-specific command in a Pages project.\n" + diff --git a/packages/wrangler/src/deployments.ts b/packages/wrangler/src/deployments.ts index e5f2e59257f2..c70228292e53 100644 --- a/packages/wrangler/src/deployments.ts +++ b/packages/wrangler/src/deployments.ts @@ -323,7 +323,7 @@ export async function commonDeploymentCMDSetup( yargs: ArgumentsCamelCase ) { await printWranglerBanner(); - const config = readConfig(yargs.config, yargs); + const config = readConfig(yargs); const accountId = await requireAuth(config); const scriptName = getScriptName( { name: yargs.name as string, env: undefined }, diff --git a/packages/wrangler/src/dev.ts b/packages/wrangler/src/dev.ts index 0b241863ac2c..f54f83251507 100644 --- a/packages/wrangler/src/dev.ts +++ b/packages/wrangler/src/dev.ts @@ -10,11 +10,8 @@ import { convertCfWorkerInitBindingstoBindings, extractBindingsOfType, } from "./api/startDevWorker/utils"; -import { - configFileName, - findWranglerConfig, - formatConfigSnippet, -} from "./config"; +import { configFileName, formatConfigSnippet } from "./config"; +import { resolveWranglerConfigPath } from "./config/config-helpers"; import { createCommand } from "./core/create-command"; import { validateRoutes } from "./deploy/deploy"; import { validateNodeCompatMode } from "./deployment-bundle/node-compat"; @@ -703,9 +700,7 @@ export async function startDev(args: StartDevOptions) { ); } - const configPath = - args.config || - (args.script && findWranglerConfig(path.dirname(args.script))); + const configPath = resolveWranglerConfigPath(args); const authHook: AsyncHook]> = async ( config diff --git a/packages/wrangler/src/dispatch-namespace.ts b/packages/wrangler/src/dispatch-namespace.ts index 7a4af74b89fe..5fd70279da2d 100644 --- a/packages/wrangler/src/dispatch-namespace.ts +++ b/packages/wrangler/src/dispatch-namespace.ts @@ -113,7 +113,7 @@ export function workerNamespaceCommands( "List all dispatch namespaces", (args) => args, async (args) => { - const config = readConfig(args.config, args); + const config = readConfig(args); const accountId = await requireAuth(config); await listWorkerNamespaces(accountId); metrics.sendMetricsEvent("list dispatch namespaces", { @@ -132,7 +132,7 @@ export function workerNamespaceCommands( }); }, async (args) => { - const config = readConfig(args.config, args); + const config = readConfig(args); const accountId = await requireAuth(config); await getWorkerNamespaceInfo(accountId, args.name); metrics.sendMetricsEvent("view dispatch namespace", { @@ -152,7 +152,7 @@ export function workerNamespaceCommands( }, async (args) => { await printWranglerBanner(); - const config = readConfig(args.config, args); + const config = readConfig(args); const accountId = await requireAuth(config); await createWorkerNamespace(accountId, args.name); metrics.sendMetricsEvent("create dispatch namespace", { @@ -172,7 +172,7 @@ export function workerNamespaceCommands( }, async (args) => { await printWranglerBanner(); - const config = readConfig(args.config, args); + const config = readConfig(args); const accountId = await requireAuth(config); await deleteWorkerNamespace(accountId, args.name); metrics.sendMetricsEvent("delete dispatch namespace", { @@ -198,7 +198,7 @@ export function workerNamespaceCommands( }, async (args) => { await printWranglerBanner(); - const config = readConfig(args.config, args); + const config = readConfig(args); const accountId = await requireAuth(config); await renameWorkerNamespace(accountId, args.oldName, args.newName); metrics.sendMetricsEvent("rename dispatch namespace", { diff --git a/packages/wrangler/src/hyperdrive/create.ts b/packages/wrangler/src/hyperdrive/create.ts index 8293faa117c5..6dc66473d17b 100644 --- a/packages/wrangler/src/hyperdrive/create.ts +++ b/packages/wrangler/src/hyperdrive/create.ts @@ -24,7 +24,7 @@ export function options(commonYargs: CommonYargsArgv) { export async function handler( args: StrictYargsOptionsToInterface ) { - const config = readConfig(args.config, args); + const config = readConfig(args); const origin = getOriginFromArgs(false, args); logger.log(`🚧 Creating '${args.name}'`); diff --git a/packages/wrangler/src/hyperdrive/delete.ts b/packages/wrangler/src/hyperdrive/delete.ts index e78aaccdba51..ff8c4f992429 100644 --- a/packages/wrangler/src/hyperdrive/delete.ts +++ b/packages/wrangler/src/hyperdrive/delete.ts @@ -17,7 +17,7 @@ export function options(yargs: CommonYargsArgv) { export async function handler( args: StrictYargsOptionsToInterface ) { - const config = readConfig(args.config, args); + const config = readConfig(args); logger.log(`🗑️ Deleting Hyperdrive database config ${args.id}`); await deleteConfig(config, args.id); diff --git a/packages/wrangler/src/hyperdrive/get.ts b/packages/wrangler/src/hyperdrive/get.ts index 7a2087ffbfcc..170ac1b3f602 100644 --- a/packages/wrangler/src/hyperdrive/get.ts +++ b/packages/wrangler/src/hyperdrive/get.ts @@ -17,7 +17,7 @@ export function options(yargs: CommonYargsArgv) { export async function handler( args: StrictYargsOptionsToInterface ) { - const config = readConfig(args.config, args); + const config = readConfig(args); const database = await getConfig(config, args.id); logger.log(JSON.stringify(database, null, 2)); diff --git a/packages/wrangler/src/hyperdrive/list.ts b/packages/wrangler/src/hyperdrive/list.ts index 990ea13fb87c..bba7cc362912 100644 --- a/packages/wrangler/src/hyperdrive/list.ts +++ b/packages/wrangler/src/hyperdrive/list.ts @@ -13,7 +13,7 @@ export function options(yargs: CommonYargsArgv) { export async function handler( args: StrictYargsOptionsToInterface ) { - const config = readConfig(args.config, args); + const config = readConfig(args); logger.log(`📋 Listing Hyperdrive configs`); const databases = await listConfigs(config); diff --git a/packages/wrangler/src/hyperdrive/update.ts b/packages/wrangler/src/hyperdrive/update.ts index 4354d5a5c690..23fe428a8edb 100644 --- a/packages/wrangler/src/hyperdrive/update.ts +++ b/packages/wrangler/src/hyperdrive/update.ts @@ -24,7 +24,7 @@ export function options(commonYargs: CommonYargsArgv) { export async function handler( args: StrictYargsOptionsToInterface ) { - const config = readConfig(args.config, args); + const config = readConfig(args); const origin = getOriginFromArgs(true, args); logger.log(`🚧 Updating '${args.id}'`); diff --git a/packages/wrangler/src/index.ts b/packages/wrangler/src/index.ts index b60d226e032d..22c046c77119 100644 --- a/packages/wrangler/src/index.ts +++ b/packages/wrangler/src/index.ts @@ -10,11 +10,11 @@ import { ai } from "./ai"; import { cloudchamber } from "./cloudchamber"; import { configFileName, - findWranglerConfig, formatConfigSnippet, loadDotEnv, readRawConfig, } from "./config"; +import { resolveWranglerConfigPath } from "./config/config-helpers"; import { demandSingleValue } from "./core"; import { CommandRegistry } from "./core/CommandRegistry"; import { createRegisterYargsCommand } from "./core/register-yargs-command"; @@ -1109,7 +1109,7 @@ export async function main(argv: string[]): Promise { // key to fetch) or flags try { - const configPath = args.config ?? findWranglerConfig(process.cwd()); + const configPath = resolveWranglerConfigPath(args); const rawConfig = readRawConfig(args.config); dispatcher = getMetricsDispatcher({ sendMetrics: rawConfig.send_metrics, diff --git a/packages/wrangler/src/init.ts b/packages/wrangler/src/init.ts index e7777a8fb8df..19bcdbdcb26b 100644 --- a/packages/wrangler/src/init.ts +++ b/packages/wrangler/src/init.ts @@ -219,7 +219,7 @@ export async function initHandler(args: InitArgs) { return; } else { - const config = readConfig(args.config, args); + const config = readConfig(args); accountId = await requireAuth(config); try { await fetchResult( diff --git a/packages/wrangler/src/kv/index.ts b/packages/wrangler/src/kv/index.ts index b30c913e531d..1b4a946e428d 100644 --- a/packages/wrangler/src/kv/index.ts +++ b/packages/wrangler/src/kv/index.ts @@ -116,7 +116,7 @@ export const kvNamespaceCreateCommand = createCommand({ positionalArgs: ["namespace"], async handler(args) { - const config = readConfig(args.config, args); + const config = readConfig(args); if (!config.name) { logger.warn( "No configured name present, using `worker` as a prefix for the title" @@ -173,7 +173,7 @@ export const kvNamespaceListCommand = createCommand({ behaviour: { printBanner: false }, async handler(args) { - const config = readConfig(args.config, args); + const config = readConfig(args); const accountId = await requireAuth(config); @@ -215,7 +215,7 @@ export const kvNamespaceDeleteCommand = createCommand({ }, async handler(args) { - const config = readConfig(args.config, args); + const config = readConfig(args); let id; try { @@ -324,7 +324,7 @@ export const kvKeyPutCommand = createCommand({ }, async handler({ key, ttl, expiration, metadata, ...args }) { - const config = readConfig(args.config, args); + const config = readConfig(args); const namespaceId = getKVNamespaceId(args, config); // One of `args.path` and `args.value` must be defined const value = args.path @@ -426,7 +426,7 @@ export const kvKeyListCommand = createCommand({ behaviour: { printBanner: false }, async handler({ prefix, ...args }) { // TODO: support for limit+cursor (pagination) - const config = readConfig(args.config, args); + const config = readConfig(args); const namespaceId = getKVNamespaceId(args, config); let result: NamespaceKeyInfo[]; @@ -505,7 +505,7 @@ export const kvKeyGetCommand = createCommand({ behaviour: { printBanner: false }, async handler({ key, ...args }) { - const config = readConfig(args.config, args); + const config = readConfig(args); const namespaceId = getKVNamespaceId(args, config); let bufferKVValue; @@ -589,7 +589,7 @@ export const kvKeyDeleteCommand = createCommand({ }, async handler({ key, ...args }) { - const config = readConfig(args.config, args); + const config = readConfig(args); const namespaceId = getKVNamespaceId(args, config); logger.log(`Deleting the key "${key}" on namespace ${namespaceId}.`); @@ -676,7 +676,7 @@ export const kvBulkPutCommand = createCommand({ // This could be made more efficient with a streaming parser/uploader // but we'll do that in the future if needed. - const config = readConfig(args.config, args); + const config = readConfig(args); const namespaceId = getKVNamespaceId(args, config); const content = parseJSON(readFileSync(filename), filename); @@ -802,7 +802,7 @@ export const kvBulkDeleteCommand = createCommand({ }, async handler({ filename, ...args }) { - const config = readConfig(args.config, args); + const config = readConfig(args); const namespaceId = getKVNamespaceId(args, config); if (!args.force) { diff --git a/packages/wrangler/src/pages/build-env.ts b/packages/wrangler/src/pages/build-env.ts index 183a0cb8e91c..4076f5905675 100644 --- a/packages/wrangler/src/pages/build-env.ts +++ b/packages/wrangler/src/pages/build-env.ts @@ -1,6 +1,7 @@ import { existsSync, writeFileSync } from "node:fs"; import path from "node:path"; -import { configFileName, findWranglerConfig, readPagesConfig } from "../config"; +import { configFileName, readPagesConfig } from "../config"; +import { findWranglerConfig } from "../config/config-helpers"; import { FatalError } from "../errors"; import { logger } from "../logger"; import { @@ -56,8 +57,9 @@ export const Handler = async (args: PagesBuildEnvArgs) => { pages_build_output_dir: string; }; try { - config = readPagesConfig(configPath, { + config = readPagesConfig({ ...args, + config: configPath, // eslint-disable-next-line turbo/no-undeclared-env-vars env: process.env.PAGES_ENVIRONMENT, }); diff --git a/packages/wrangler/src/pages/build.ts b/packages/wrangler/src/pages/build.ts index 7df2678774b3..5a5c97ee04f7 100644 --- a/packages/wrangler/src/pages/build.ts +++ b/packages/wrangler/src/pages/build.ts @@ -8,7 +8,8 @@ import path, { resolve as resolvePath, } from "node:path"; import { createUploadWorkerBundleContents } from "../api/pages/create-worker-bundle-contents"; -import { findWranglerConfig, readPagesConfig } from "../config"; +import { readPagesConfig } from "../config"; +import { findWranglerConfig } from "../config/config-helpers"; import { shouldCheckFetch } from "../deployment-bundle/bundle"; import { writeAdditionalModules } from "../deployment-bundle/find-additional-modules"; import { validateNodeCompatMode } from "../deployment-bundle/node-compat"; @@ -359,8 +360,9 @@ async function maybeReadPagesConfig( return undefined; } try { - const config = readPagesConfig(configPath, { + const config = readPagesConfig({ ...args, + config: configPath, // eslint-disable-next-line turbo/no-undeclared-env-vars env: process.env.PAGES_ENVIRONMENT, }); diff --git a/packages/wrangler/src/pages/deploy.ts b/packages/wrangler/src/pages/deploy.ts index 36fda54ab00a..b0b325e91aff 100644 --- a/packages/wrangler/src/pages/deploy.ts +++ b/packages/wrangler/src/pages/deploy.ts @@ -1,8 +1,9 @@ import { execSync } from "node:child_process"; import { deploy } from "../api/pages/deploy"; import { fetchResult } from "../cfetch"; -import { configFileName, findWranglerConfig, readPagesConfig } from "../config"; +import { configFileName, readPagesConfig } from "../config"; import { getConfigCache, saveToConfigCache } from "../config-cache"; +import { findWranglerConfig } from "../config/config-helpers"; import { prompt, select } from "../dialogs"; import { FatalError } from "../errors"; import { logger } from "../logger"; @@ -123,7 +124,7 @@ export const Handler = async (args: PagesDeployArgs) => { * need for now. We will perform a second config file read later * in `/api/pages/deploy`, that will get the environment specific config */ - config = readPagesConfig(configPath, { ...args, env: undefined }); + config = readPagesConfig({ ...args, config: configPath, env: undefined }); } catch (err) { if ( !( diff --git a/packages/wrangler/src/pages/deployment-tails.ts b/packages/wrangler/src/pages/deployment-tails.ts index 8b9319612eb9..32ffd68d5b98 100644 --- a/packages/wrangler/src/pages/deployment-tails.ts +++ b/packages/wrangler/src/pages/deployment-tails.ts @@ -131,7 +131,7 @@ export async function Handler({ await printWranglerBanner(); } - const config = readConfig(args.config, args); + const config = readConfig(args); const pagesConfig = getConfigCache( PAGES_CONFIG_CACHE_FILENAME ); diff --git a/packages/wrangler/src/pages/dev.ts b/packages/wrangler/src/pages/dev.ts index 1053cd473115..93f465a13b8e 100644 --- a/packages/wrangler/src/pages/dev.ts +++ b/packages/wrangler/src/pages/dev.ts @@ -303,7 +303,7 @@ export const Handler = async (args: PagesDevArguments) => { // for `dev` we always use the top-level config, which means we need // to read the config file with `env` set to `undefined` - const config = readConfig(undefined, { ...args, env: undefined }); + const config = readConfig({ ...args, env: undefined }); const resolvedDirectory = args.directory ?? config.pages_build_output_dir; const [_pages, _dev, ...remaining] = args._; const command = remaining; diff --git a/packages/wrangler/src/pages/secret/index.ts b/packages/wrangler/src/pages/secret/index.ts index 7c0e5da2913e..11b0e5b33856 100644 --- a/packages/wrangler/src/pages/secret/index.ts +++ b/packages/wrangler/src/pages/secret/index.ts @@ -2,12 +2,9 @@ import path from "node:path"; import readline from "node:readline"; import chalk from "chalk"; import { fetchResult } from "../../cfetch"; -import { - configFileName, - findWranglerConfig, - readPagesConfig, -} from "../../config"; +import { configFileName, readPagesConfig } from "../../config"; import { getConfigCache } from "../../config-cache"; +import { findWranglerConfig } from "../../config/config-helpers"; import { confirm, prompt } from "../../dialogs"; import { FatalError } from "../../errors"; import { printWranglerBanner } from "../../index"; @@ -53,7 +50,7 @@ async function pagesProject( * return the top-level config. This contains all the information we * need. */ - config = readPagesConfig(configPath, { env: undefined }); + config = readPagesConfig({ config: configPath, env: undefined }); } catch (err) { if ( !( diff --git a/packages/wrangler/src/pipelines/index.ts b/packages/wrangler/src/pipelines/index.ts index 073fec47b886..b1cf9a221134 100644 --- a/packages/wrangler/src/pipelines/index.ts +++ b/packages/wrangler/src/pipelines/index.ts @@ -183,7 +183,7 @@ export function pipelines(pipelineYargs: CommonYargsArgv) { async (args) => { await printWranglerBanner(); - const config = readConfig(args.config, args); + const config = readConfig(args); const bucket = args.r2; const name = args.pipeline; const compression = @@ -302,7 +302,7 @@ export function pipelines(pipelineYargs: CommonYargsArgv) { "List current pipelines", (yargs) => yargs, async (args) => { - const config = readConfig(args.config, args); + const config = readConfig(args); const accountId = await requireAuth(config); // TODO: we should show bindings & transforms if they exist for given ids @@ -332,7 +332,7 @@ export function pipelines(pipelineYargs: CommonYargsArgv) { }, async (args) => { await printWranglerBanner(); - const config = readConfig(args.config, args); + const config = readConfig(args); const accountId = await requireAuth(config); const name = args.pipeline; @@ -368,7 +368,7 @@ export function pipelines(pipelineYargs: CommonYargsArgv) { const name = args.pipeline; // only the fields set will be updated - other fields will use the existing config - const config = readConfig(args.config, args); + const config = readConfig(args); const accountId = await requireAuth(config); const pipelineConfig = await getPipeline(accountId, name); @@ -494,7 +494,7 @@ export function pipelines(pipelineYargs: CommonYargsArgv) { }, async (args) => { await printWranglerBanner(); - const config = readConfig(args.config, args); + const config = readConfig(args); const accountId = await requireAuth(config); const name = args.pipeline; diff --git a/packages/wrangler/src/pubsub/pubsub-commands.ts b/packages/wrangler/src/pubsub/pubsub-commands.ts index 2b851fa56ac8..8ae16ea17f82 100644 --- a/packages/wrangler/src/pubsub/pubsub-commands.ts +++ b/packages/wrangler/src/pubsub/pubsub-commands.ts @@ -38,7 +38,7 @@ export function pubSubCommands( .epilogue(pubsub.pubSubBetaWarning); }, async (args) => { - const config = readConfig(args.config, args); + const config = readConfig(args); const accountId = await requireAuth(config); const namespace: pubsub.PubSubNamespace = { @@ -63,7 +63,7 @@ export function pubSubCommands( return yargs.epilogue(pubsub.pubSubBetaWarning); }, async (args) => { - const config = readConfig(args.config, args); + const config = readConfig(args); const accountId = await requireAuth(config); logger.log(await pubsub.listPubSubNamespaces(accountId)); @@ -85,7 +85,7 @@ export function pubSubCommands( .epilogue(pubsub.pubSubBetaWarning); }, async (args) => { - const config = readConfig(args.config, args); + const config = readConfig(args); const accountId = await requireAuth(config); if ( @@ -115,7 +115,7 @@ export function pubSubCommands( .epilogue(pubsub.pubSubBetaWarning); }, async (args) => { - const config = readConfig(args.config, args); + const config = readConfig(args); const accountId = await requireAuth(config); logger.log( @@ -164,7 +164,7 @@ export function pubSubCommands( }) .epilogue(pubsub.pubSubBetaWarning), async (args) => { - const config = readConfig(args.config, args); + const config = readConfig(args); const accountId = await requireAuth(config); const broker: pubsub.PubSubBroker = { @@ -229,7 +229,7 @@ export function pubSubCommands( }) .epilogue(pubsub.pubSubBetaWarning), async (args) => { - const config = readConfig(args.config, args); + const config = readConfig(args); const accountId = await requireAuth(config); const broker: pubsub.PubSubBrokerUpdate = {}; @@ -283,7 +283,7 @@ export function pubSubCommands( .epilogue(pubsub.pubSubBetaWarning); }, async (args) => { - const config = readConfig(args.config, args); + const config = readConfig(args); const accountId = await requireAuth(config); logger.log(await pubsub.listPubSubBrokers(accountId, args.namespace)); @@ -313,7 +313,7 @@ export function pubSubCommands( .epilogue(pubsub.pubSubBetaWarning); }, async (args) => { - const config = readConfig(args.config, args); + const config = readConfig(args); const accountId = await requireAuth(config); if ( @@ -353,7 +353,7 @@ export function pubSubCommands( .epilogue(pubsub.pubSubBetaWarning); }, async (args) => { - const config = readConfig(args.config, args); + const config = readConfig(args); const accountId = await requireAuth(config); logger.log( @@ -412,7 +412,7 @@ export function pubSubCommands( .epilogue(pubsub.pubSubBetaWarning); }, async (args) => { - const config = readConfig(args.config, args); + const config = readConfig(args); const accountId = await requireAuth(config); let parsedExpiration: number | undefined; @@ -472,7 +472,7 @@ export function pubSubCommands( .epilogue(pubsub.pubSubBetaWarning); }, async (args) => { - const config = readConfig(args.config, args); + const config = readConfig(args); const accountId = await requireAuth(config); const numTokens = args.jti.length; @@ -520,7 +520,7 @@ export function pubSubCommands( .epilogue(pubsub.pubSubBetaWarning); }, async (args) => { - const config = readConfig(args.config, args); + const config = readConfig(args); const accountId = await requireAuth(config); const numTokens = args.jti.length; @@ -561,7 +561,7 @@ export function pubSubCommands( .epilogue(pubsub.pubSubBetaWarning); }, async (args) => { - const config = readConfig(args.config, args); + const config = readConfig(args); const accountId = await requireAuth(config); logger.log(`Listing previously revoked tokens for ${args.name}...`); @@ -597,7 +597,7 @@ export function pubSubCommands( .epilogue(pubsub.pubSubBetaWarning); }, async (args) => { - const config = readConfig(args.config, args); + const config = readConfig(args); const accountId = await requireAuth(config); logger.log( diff --git a/packages/wrangler/src/queues/cli/commands/consumer/http-pull/add.ts b/packages/wrangler/src/queues/cli/commands/consumer/http-pull/add.ts index 961263e9e5d1..5fb55bf9695d 100644 --- a/packages/wrangler/src/queues/cli/commands/consumer/http-pull/add.ts +++ b/packages/wrangler/src/queues/cli/commands/consumer/http-pull/add.ts @@ -60,7 +60,7 @@ function createBody( export async function handler( args: StrictYargsOptionsToInterface ) { - const config = readConfig(args.config, args); + const config = readConfig(args); if (Array.isArray(args.retryDelaySecs)) { throw new CommandLineArgsError( diff --git a/packages/wrangler/src/queues/cli/commands/consumer/http-pull/remove.ts b/packages/wrangler/src/queues/cli/commands/consumer/http-pull/remove.ts index bc3d10df641b..353f124eaa26 100644 --- a/packages/wrangler/src/queues/cli/commands/consumer/http-pull/remove.ts +++ b/packages/wrangler/src/queues/cli/commands/consumer/http-pull/remove.ts @@ -17,7 +17,7 @@ export function options(yargs: CommonYargsArgv) { export async function handler( args: StrictYargsOptionsToInterface ) { - const config = readConfig(args.config, args); + const config = readConfig(args); logger.log(`Removing consumer from queue ${args.queueName}.`); await deletePullConsumer(config, args.queueName); diff --git a/packages/wrangler/src/queues/cli/commands/consumer/worker/add.ts b/packages/wrangler/src/queues/cli/commands/consumer/worker/add.ts index f98794c28c0d..1524fdd9e953 100644 --- a/packages/wrangler/src/queues/cli/commands/consumer/worker/add.ts +++ b/packages/wrangler/src/queues/cli/commands/consumer/worker/add.ts @@ -74,7 +74,7 @@ function createBody( export async function handler( args: StrictYargsOptionsToInterface ) { - const config = readConfig(args.config, args); + const config = readConfig(args); if (Array.isArray(args.retryDelaySecs)) { throw new CommandLineArgsError( diff --git a/packages/wrangler/src/queues/cli/commands/consumer/worker/remove.ts b/packages/wrangler/src/queues/cli/commands/consumer/worker/remove.ts index a90c0b88d2b4..ba7740b43981 100644 --- a/packages/wrangler/src/queues/cli/commands/consumer/worker/remove.ts +++ b/packages/wrangler/src/queues/cli/commands/consumer/worker/remove.ts @@ -23,7 +23,7 @@ export function options(yargs: CommonYargsArgv) { export async function handler( args: StrictYargsOptionsToInterface ) { - const config = readConfig(args.config, args); + const config = readConfig(args); logger.log(`Removing consumer from queue ${args.queueName}.`); await deleteWorkerConsumer(config, args.queueName, args.scriptName, args.env); diff --git a/packages/wrangler/src/queues/cli/commands/create.ts b/packages/wrangler/src/queues/cli/commands/create.ts index c0d28d6918c4..69a03fb580e7 100644 --- a/packages/wrangler/src/queues/cli/commands/create.ts +++ b/packages/wrangler/src/queues/cli/commands/create.ts @@ -52,7 +52,7 @@ function createBody( export async function handler( args: StrictYargsOptionsToInterface ) { - const config = readConfig(args.config, args); + const config = readConfig(args); const body = createBody(args); try { logger.log(`🌀 Creating queue '${args.name}'`); diff --git a/packages/wrangler/src/queues/cli/commands/delete.ts b/packages/wrangler/src/queues/cli/commands/delete.ts index 332c3624840c..af379cf39af3 100644 --- a/packages/wrangler/src/queues/cli/commands/delete.ts +++ b/packages/wrangler/src/queues/cli/commands/delete.ts @@ -18,7 +18,7 @@ export function options(yargs: CommonYargsArgv) { export async function handler( args: StrictYargsOptionsToInterface ) { - const config = readConfig(args.config, args); + const config = readConfig(args); logger.log(`Deleting queue ${args.name}.`); await deleteQueue(config, args.name); diff --git a/packages/wrangler/src/queues/cli/commands/info.ts b/packages/wrangler/src/queues/cli/commands/info.ts index 8baaa4c2d70a..e558e6de8251 100644 --- a/packages/wrangler/src/queues/cli/commands/info.ts +++ b/packages/wrangler/src/queues/cli/commands/info.ts @@ -20,7 +20,7 @@ export function options(yargs: CommonYargsArgv) { export async function handler( args: StrictYargsOptionsToInterface ) { - const config = readConfig(args.config, args); + const config = readConfig(args); const queue: QueueResponse = await getQueue(config, args.name); const accountId = await requireAuth(config); diff --git a/packages/wrangler/src/queues/cli/commands/list.ts b/packages/wrangler/src/queues/cli/commands/list.ts index 1399e08c39f4..c58d882f6f2b 100644 --- a/packages/wrangler/src/queues/cli/commands/list.ts +++ b/packages/wrangler/src/queues/cli/commands/list.ts @@ -18,7 +18,7 @@ export function options(yargs: CommonYargsArgv) { export async function handler( args: StrictYargsOptionsToInterface ) { - const config = readConfig(args.config, args); + const config = readConfig(args); const queues = await listQueues(config, args.page); logger.table( diff --git a/packages/wrangler/src/r2/object.ts b/packages/wrangler/src/r2/object.ts index 2c50696a3b2c..fa88dba1896c 100644 --- a/packages/wrangler/src/r2/object.ts +++ b/packages/wrangler/src/r2/object.ts @@ -366,7 +366,7 @@ export const r2ObjectDeleteCommand = createCommand({ }, async handler(args) { const { objectPath, jurisdiction } = args; - const config = readConfig(args.config, args); + const config = readConfig(args); const { bucket, key } = bucketAndKeyFromObjectPath(objectPath); let fullBucketName = bucket; if (jurisdiction !== undefined) { diff --git a/packages/wrangler/src/secret/index.ts b/packages/wrangler/src/secret/index.ts index 3035b98b9fa8..5b6adf063139 100644 --- a/packages/wrangler/src/secret/index.ts +++ b/packages/wrangler/src/secret/index.ts @@ -154,7 +154,7 @@ export const secret = (secretYargs: CommonYargsArgv) => { }, async (args) => { await printWranglerBanner(); - const config = readConfig(args.config, args); + const config = readConfig(args); if (config.pages_build_output_dir) { throw new UserError( "It looks like you've run a Workers-specific command in a Pages project.\n" + @@ -262,7 +262,7 @@ export const secret = (secretYargs: CommonYargsArgv) => { }, async (args) => { await printWranglerBanner(); - const config = readConfig(args.config, args); + const config = readConfig(args); if (config.pages_build_output_dir) { throw new UserError( "It looks like you've run a Workers-specific command in a Pages project.\n" + @@ -324,7 +324,7 @@ export const secret = (secretYargs: CommonYargsArgv) => { }); }, async (args) => { - const config = readConfig(args.config, args); + const config = readConfig(args); if (config.pages_build_output_dir) { throw new UserError( "It looks like you've run a Workers-specific command in a Pages project.\n" + @@ -391,7 +391,7 @@ type SecretBulkArgs = StrictYargsOptionsToInterface; export const secretBulkHandler = async (secretBulkArgs: SecretBulkArgs) => { await printWranglerBanner(); - const config = readConfig(secretBulkArgs.config, secretBulkArgs); + const config = readConfig(secretBulkArgs); if (config.pages_build_output_dir) { throw new UserError( "It looks like you've run a Workers-specific command in a Pages project.\n" + diff --git a/packages/wrangler/src/tail/index.ts b/packages/wrangler/src/tail/index.ts index 65986b76b039..fe5f70ecdf1d 100644 --- a/packages/wrangler/src/tail/index.ts +++ b/packages/wrangler/src/tail/index.ts @@ -92,7 +92,7 @@ export async function tailHandler(args: TailArgs) { if (args.format === "pretty") { await printWranglerBanner(); } - const config = readConfig(args.config, args); + const config = readConfig(args); if (config.pages_build_output_dir) { throw new UserError( "It looks like you've run a Workers-specific command in a Pages project.\n" + diff --git a/packages/wrangler/src/triggers/index.ts b/packages/wrangler/src/triggers/index.ts index 1a65f770e5a8..d19ed35f5af9 100644 --- a/packages/wrangler/src/triggers/index.ts +++ b/packages/wrangler/src/triggers/index.ts @@ -57,7 +57,7 @@ async function triggersDeployHandler( ) { await printWranglerBanner(); - const config = readConfig(undefined, args); + const config = readConfig(args); const assetsOptions = getAssetsOptions({ assets: undefined }, config); metrics.sendMetricsEvent( "deploy worker triggers", diff --git a/packages/wrangler/src/type-generation/index.ts b/packages/wrangler/src/type-generation/index.ts index 6864cee55b0e..306c95c36798 100644 --- a/packages/wrangler/src/type-generation/index.ts +++ b/packages/wrangler/src/type-generation/index.ts @@ -2,7 +2,8 @@ import * as fs from "node:fs"; import { basename, dirname, extname, join, relative, resolve } from "node:path"; import { findUpSync } from "find-up"; import { getNodeCompat } from "miniflare"; -import { findWranglerConfig, readConfig } from "../config"; +import { readConfig } from "../config"; +import { resolveWranglerConfigPath } from "../config/config-helpers"; import { getEntry } from "../deployment-bundle/entry"; import { getVarsForDev } from "../dev/dev-vars"; import { CommandLineArgsError, UserError } from "../errors"; @@ -62,7 +63,7 @@ export async function typesHandler( await printWranglerBanner(); - const configPath = args.config ?? findWranglerConfig(process.cwd()); + const configPath = resolveWranglerConfigPath(args); if ( !configPath || !fs.existsSync(configPath) || @@ -76,7 +77,7 @@ export async function typesHandler( return; } - const config = readConfig(configPath, args); + const config = readConfig(args); // args.xRuntime will be a string if the user passes "--x-include-runtime" or "--x-include-runtime=..." if (typeof args.experimentalIncludeRuntime === "string") { diff --git a/packages/wrangler/src/vectorize/create.ts b/packages/wrangler/src/vectorize/create.ts index 6ceeadc43712..ef7b80b9bf10 100644 --- a/packages/wrangler/src/vectorize/create.ts +++ b/packages/wrangler/src/vectorize/create.ts @@ -67,7 +67,7 @@ export function options(yargs: CommonYargsArgv) { export async function handler( args: StrictYargsOptionsToInterface ) { - const config = readConfig(args.config, args); + const config = readConfig(args); let indexConfig; if (args.preset) { diff --git a/packages/wrangler/src/vectorize/createMetadataIndex.ts b/packages/wrangler/src/vectorize/createMetadataIndex.ts index b9643b5fe745..b8751fa1a20e 100644 --- a/packages/wrangler/src/vectorize/createMetadataIndex.ts +++ b/packages/wrangler/src/vectorize/createMetadataIndex.ts @@ -36,7 +36,7 @@ export function options(yargs: CommonYargsArgv) { export async function handler( args: StrictYargsOptionsToInterface ) { - const config = readConfig(args.config, args); + const config = readConfig(args); const reqOptions: VectorizeMetadataIndexProperty = { propertyName: args.propertyName, diff --git a/packages/wrangler/src/vectorize/delete.ts b/packages/wrangler/src/vectorize/delete.ts index fdad147b6811..45b991568999 100644 --- a/packages/wrangler/src/vectorize/delete.ts +++ b/packages/wrangler/src/vectorize/delete.ts @@ -32,7 +32,7 @@ export function options(yargs: CommonYargsArgv) { export async function handler( args: StrictYargsOptionsToInterface ) { - const config = readConfig(args.config, args); + const config = readConfig(args); logger.log(`Deleting Vectorize index ${args.name}`); if (!args.force) { diff --git a/packages/wrangler/src/vectorize/deleteByIds.ts b/packages/wrangler/src/vectorize/deleteByIds.ts index bdb88df24bfc..c84bb69f70f2 100644 --- a/packages/wrangler/src/vectorize/deleteByIds.ts +++ b/packages/wrangler/src/vectorize/deleteByIds.ts @@ -30,7 +30,7 @@ export function options(yargs: CommonYargsArgv) { export async function handler( args: StrictYargsOptionsToInterface ) { - const config = readConfig(args.config, args); + const config = readConfig(args); if (args.ids.length === 0) { logger.error("🚨 Please provide valid vector identifiers for deletion."); diff --git a/packages/wrangler/src/vectorize/deleteMetadataIndex.ts b/packages/wrangler/src/vectorize/deleteMetadataIndex.ts index e8e3fc3e5e09..686933ece5a7 100644 --- a/packages/wrangler/src/vectorize/deleteMetadataIndex.ts +++ b/packages/wrangler/src/vectorize/deleteMetadataIndex.ts @@ -26,7 +26,7 @@ export function options(yargs: CommonYargsArgv) { export async function handler( args: StrictYargsOptionsToInterface ) { - const config = readConfig(args.config, args); + const config = readConfig(args); const reqOptions: VectorizeMetadataIndexPropertyName = { propertyName: args.propertyName, diff --git a/packages/wrangler/src/vectorize/get.ts b/packages/wrangler/src/vectorize/get.ts index 4df4145aaef8..75e49bfda49f 100644 --- a/packages/wrangler/src/vectorize/get.ts +++ b/packages/wrangler/src/vectorize/get.ts @@ -31,7 +31,7 @@ export function options(yargs: CommonYargsArgv) { export async function handler( args: StrictYargsOptionsToInterface ) { - const config = readConfig(args.config, args); + const config = readConfig(args); const index = await getIndex(config, args.name, args.deprecatedV1); if (args.json) { diff --git a/packages/wrangler/src/vectorize/getByIds.ts b/packages/wrangler/src/vectorize/getByIds.ts index b3e4af85ce71..c5f5e4ac9678 100644 --- a/packages/wrangler/src/vectorize/getByIds.ts +++ b/packages/wrangler/src/vectorize/getByIds.ts @@ -30,7 +30,7 @@ export function options(yargs: CommonYargsArgv) { export async function handler( args: StrictYargsOptionsToInterface ) { - const config = readConfig(args.config, args); + const config = readConfig(args); if (args.ids.length === 0) { logger.error("🚨 Please provide valid vector identifiers."); diff --git a/packages/wrangler/src/vectorize/info.ts b/packages/wrangler/src/vectorize/info.ts index 05f2f6939da3..1726fb900242 100644 --- a/packages/wrangler/src/vectorize/info.ts +++ b/packages/wrangler/src/vectorize/info.ts @@ -25,7 +25,7 @@ export function options(yargs: CommonYargsArgv) { export async function handler( args: StrictYargsOptionsToInterface ) { - const config = readConfig(args.config, args); + const config = readConfig(args); logger.log(`📋 Fetching index info...`); const info = await indexInfo(config, args.name); diff --git a/packages/wrangler/src/vectorize/insert.ts b/packages/wrangler/src/vectorize/insert.ts index 81ac6c3f0611..44e5adb8166a 100644 --- a/packages/wrangler/src/vectorize/insert.ts +++ b/packages/wrangler/src/vectorize/insert.ts @@ -56,7 +56,7 @@ export function options(yargs: CommonYargsArgv) { export async function handler( args: StrictYargsOptionsToInterface ) { - const config = readConfig(args.config, args); + const config = readConfig(args); const rl = createInterface({ input: createReadStream(args.file) }); if ( diff --git a/packages/wrangler/src/vectorize/list.ts b/packages/wrangler/src/vectorize/list.ts index 14b92a78597e..ed4fd7d62340 100644 --- a/packages/wrangler/src/vectorize/list.ts +++ b/packages/wrangler/src/vectorize/list.ts @@ -25,7 +25,7 @@ export function options(yargs: CommonYargsArgv) { export async function handler( args: StrictYargsOptionsToInterface ) { - const config = readConfig(args.config, args); + const config = readConfig(args); logger.log(`📋 Listing Vectorize indexes...`); const indexes = await listIndexes(config, args.deprecatedV1); diff --git a/packages/wrangler/src/vectorize/listMetadataIndex.ts b/packages/wrangler/src/vectorize/listMetadataIndex.ts index 2c7230503f36..8032f7057c52 100644 --- a/packages/wrangler/src/vectorize/listMetadataIndex.ts +++ b/packages/wrangler/src/vectorize/listMetadataIndex.ts @@ -25,7 +25,7 @@ export function options(yargs: CommonYargsArgv) { export async function handler( args: StrictYargsOptionsToInterface ) { - const config = readConfig(args.config, args); + const config = readConfig(args); logger.log(`📋 Fetching metadata indexes...`); const res = await listMetadataIndex(config, args.name); diff --git a/packages/wrangler/src/vectorize/query.ts b/packages/wrangler/src/vectorize/query.ts index 4dc695fb0c4a..675d193481da 100644 --- a/packages/wrangler/src/vectorize/query.ts +++ b/packages/wrangler/src/vectorize/query.ts @@ -96,7 +96,7 @@ export function options(yargs: CommonYargsArgv) { export async function handler( args: StrictYargsOptionsToInterface ) { - const config = readConfig(args.config, args); + const config = readConfig(args); const queryOptions: VectorizeQueryOptions = { topK: args.topK, diff --git a/packages/wrangler/src/vectorize/upsert.ts b/packages/wrangler/src/vectorize/upsert.ts index 86402d800951..083b82a88be1 100644 --- a/packages/wrangler/src/vectorize/upsert.ts +++ b/packages/wrangler/src/vectorize/upsert.ts @@ -47,7 +47,7 @@ export function options(yargs: CommonYargsArgv) { export async function handler( args: StrictYargsOptionsToInterface ) { - const config = readConfig(args.config, args); + const config = readConfig(args); const rl = createInterface({ input: createReadStream(args.file) }); if (Number(args.batchSize) > VECTORIZE_MAX_BATCH_SIZE) { diff --git a/packages/wrangler/src/versions/deployments/list.ts b/packages/wrangler/src/versions/deployments/list.ts index 9153a08c730f..27dd00fda4ab 100644 --- a/packages/wrangler/src/versions/deployments/list.ts +++ b/packages/wrangler/src/versions/deployments/list.ts @@ -1,6 +1,7 @@ import assert from "assert"; import { logRaw } from "@cloudflare/cli"; import { brandColor, gray } from "@cloudflare/cli/colors"; +import { readConfig } from "../../config"; import { UserError } from "../../errors"; import * as metrics from "../../metrics"; import { printWranglerBanner } from "../../update-check"; @@ -8,7 +9,6 @@ import { requireAuth } from "../../user"; import formatLabelledValues from "../../utils/render-labelled-values"; import { fetchLatestDeployments, fetchVersions } from "../api"; import { getVersionSource } from "../list"; -import { getConfig } from "../utils/config"; import type { CommonYargsArgv, StrictYargsOptionsToInterface, @@ -42,7 +42,7 @@ export async function versionsDeploymentsListHandler( await printWranglerBanner(); } - const config = getConfig(args); + const config = readConfig(args); metrics.sendMetricsEvent( "list versioned deployments", { json: args.json }, diff --git a/packages/wrangler/src/versions/deployments/status.ts b/packages/wrangler/src/versions/deployments/status.ts index 47366cce8a6a..8e3369a8a805 100644 --- a/packages/wrangler/src/versions/deployments/status.ts +++ b/packages/wrangler/src/versions/deployments/status.ts @@ -1,13 +1,13 @@ import assert from "assert"; import { logRaw } from "@cloudflare/cli"; import { brandColor, gray } from "@cloudflare/cli/colors"; +import { readConfig } from "../../config"; import { UserError } from "../../errors"; import * as metrics from "../../metrics"; import { printWranglerBanner } from "../../update-check"; import { requireAuth } from "../../user"; import formatLabelledValues from "../../utils/render-labelled-values"; import { fetchLatestDeployment, fetchVersions } from "../api"; -import { getConfig } from "../utils/config"; import { getDeploymentSource } from "./list"; import type { CommonYargsArgv, @@ -42,7 +42,7 @@ export async function versionsDeploymentsStatusHandler( await printWranglerBanner(); } - const config = getConfig(args); + const config = readConfig(args); metrics.sendMetricsEvent( "view latest versioned deployment", {}, diff --git a/packages/wrangler/src/versions/rollback/index.ts b/packages/wrangler/src/versions/rollback/index.ts index d7bea12981fb..48e2e2d5c3e4 100644 --- a/packages/wrangler/src/versions/rollback/index.ts +++ b/packages/wrangler/src/versions/rollback/index.ts @@ -1,5 +1,6 @@ import * as cli from "@cloudflare/cli"; import { spinnerWhile } from "@cloudflare/cli/interactive"; +import { readConfig } from "../../config"; import { confirm, prompt } from "../../dialogs"; import { UserError } from "../../errors"; import { logger } from "../../logger"; @@ -7,7 +8,6 @@ import { APIError } from "../../parse"; import { requireAuth } from "../../user"; import { createDeployment, fetchLatestDeployments, fetchVersion } from "../api"; import { printLatestDeployment, printVersions } from "../deploy"; -import { getConfig } from "../utils/config"; import type { CommonYargsArgv, StrictYargsOptionsToInterface, @@ -58,7 +58,7 @@ function versionsRollbackOptions(rollbackYargs: CommonYargsArgv) { } async function versionsRollbackHandler(args: VersionsRollbackArgs) { - const config = getConfig(args); + const config = readConfig(args); const accountId = await requireAuth(config); const workerName = args.name ?? config.name; diff --git a/packages/wrangler/src/versions/secrets/bulk.ts b/packages/wrangler/src/versions/secrets/bulk.ts index 535eabda5edb..c8dbabc59721 100644 --- a/packages/wrangler/src/versions/secrets/bulk.ts +++ b/packages/wrangler/src/versions/secrets/bulk.ts @@ -9,7 +9,6 @@ import { logger } from "../../logger"; import { parseJSON, readFileSync } from "../../parse"; import { validateJSONFileSecrets } from "../../secret"; import { requireAuth } from "../../user"; -import { getConfig } from "../utils/config"; import { copyWorkerVersionWithNewSecrets } from "./index"; import type { WorkerVersion } from "./index"; @@ -20,7 +19,7 @@ export const versionsSecretBulkCommand = createCommand({ status: "stable", }, behaviour: { - provideConfig: false, + printConfigWarnings: false, }, args: { json: { @@ -44,8 +43,7 @@ export const versionsSecretBulkCommand = createCommand({ }, }, positionalArgs: ["json"], - handler: async function versionsSecretPutBulkHandler(args) { - const config = getConfig(args, { hideWarnings: true }); + handler: async function versionsSecretPutBulkHandler(args, { config }) { const scriptName = getLegacyScriptName(args, config); if (!scriptName) { throw new UserError( diff --git a/packages/wrangler/src/versions/secrets/delete.ts b/packages/wrangler/src/versions/secrets/delete.ts index af130f2ffbd4..49431579238d 100644 --- a/packages/wrangler/src/versions/secrets/delete.ts +++ b/packages/wrangler/src/versions/secrets/delete.ts @@ -6,7 +6,6 @@ import { UserError } from "../../errors"; import { getLegacyScriptName, isLegacyEnv } from "../../index"; import { logger } from "../../logger"; import { requireAuth } from "../../user"; -import { getConfig } from "../utils/config"; import { copyWorkerVersionWithNewSecrets } from "./index"; import type { VersionDetails, WorkerVersion } from "./index"; @@ -17,7 +16,7 @@ export const versionsSecretDeleteCommand = createCommand({ status: "stable", }, behaviour: { - provideConfig: false, + printConfigWarnings: false, }, args: { key: { @@ -42,8 +41,7 @@ export const versionsSecretDeleteCommand = createCommand({ }, }, positionalArgs: ["key"], - handler: async function versionsSecretDeleteHandler(args) { - const config = getConfig(args, { hideWarnings: true }); + handler: async function versionsSecretDeleteHandler(args, { config }) { const scriptName = getLegacyScriptName(args, config); if (!scriptName) { throw new UserError( diff --git a/packages/wrangler/src/versions/secrets/list.ts b/packages/wrangler/src/versions/secrets/list.ts index 2d250594988f..0fb7c57290f8 100644 --- a/packages/wrangler/src/versions/secrets/list.ts +++ b/packages/wrangler/src/versions/secrets/list.ts @@ -6,7 +6,6 @@ import { getLegacyScriptName } from "../../index"; import { logger } from "../../logger"; import { requireAuth } from "../../user"; import { fetchDeploymentVersions, fetchLatestDeployment } from "../api"; -import { getConfig } from "../utils/config"; import type { VersionDetails } from "."; import type { ApiVersion, VersionCache } from "../types"; @@ -17,7 +16,7 @@ export const versionsSecretsListCommand = createCommand({ status: "stable", }, behaviour: { - provideConfig: false, + printConfigWarnings: false, }, args: { name: { @@ -31,9 +30,7 @@ export const versionsSecretsListCommand = createCommand({ default: false, }, }, - handler: async function versionsSecretListHandler(args) { - const config = getConfig(args, { hideWarnings: true }); - + handler: async function versionsSecretListHandler(args, { config }) { const scriptName = getLegacyScriptName(args, config); if (!scriptName) { throw new UserError( diff --git a/packages/wrangler/src/versions/secrets/put.ts b/packages/wrangler/src/versions/secrets/put.ts index b4a48720d8dc..37640e2dbe03 100644 --- a/packages/wrangler/src/versions/secrets/put.ts +++ b/packages/wrangler/src/versions/secrets/put.ts @@ -7,7 +7,6 @@ import { getLegacyScriptName } from "../../index"; import { logger } from "../../logger"; import { requireAuth } from "../../user"; import { readFromStdin, trimTrailingWhitespace } from "../../utils/std"; -import { getConfig } from "../utils/config"; import { copyWorkerVersionWithNewSecrets } from "./index"; import type { WorkerVersion } from "./index"; @@ -18,7 +17,7 @@ export const versionsSecretPutCommand = createCommand({ status: "stable", }, behaviour: { - provideConfig: false, + printConfigWarnings: false, }, args: { key: { @@ -43,8 +42,7 @@ export const versionsSecretPutCommand = createCommand({ }, }, positionalArgs: ["key"], - handler: async function versionsSecretPutHandler(args) { - const config = getConfig(args, { hideWarnings: true }); + handler: async function versionsSecretPutHandler(args, { config }) { const scriptName = getLegacyScriptName(args, config); if (!scriptName) { throw new UserError( diff --git a/packages/wrangler/src/versions/upload.ts b/packages/wrangler/src/versions/upload.ts index ff055aceb612..36dce73addea 100644 --- a/packages/wrangler/src/versions/upload.ts +++ b/packages/wrangler/src/versions/upload.ts @@ -51,7 +51,6 @@ import { import { requireAuth } from "../user"; import { collectKeyValues } from "../utils/collectKeyValues"; import { retryOnError } from "../utils/retry"; -import { getConfig } from "./utils/config"; import type { AssetsOptions } from "../assets"; import type { Config } from "../config"; import type { Rule } from "../config/environment"; @@ -282,10 +281,9 @@ export const versionsUploadCommand = createCommand({ }, }, behaviour: { - provideConfig: false, + provideConfig: true, }, - handler: async function versionsUploadHandler(args) { - const config = getConfig(args, {}, args.script); + handler: async function versionsUploadHandler(args, { config }) { const entry = await getEntry(args, config, "versions upload"); metrics.sendMetricsEvent( "upload worker version", diff --git a/packages/wrangler/src/versions/utils/config.ts b/packages/wrangler/src/versions/utils/config.ts deleted file mode 100644 index 391c5a55db09..000000000000 --- a/packages/wrangler/src/versions/utils/config.ts +++ /dev/null @@ -1,11 +0,0 @@ -import path from "node:path"; -import { findWranglerConfig, readConfig } from "../../config"; - -type Args = Parameters[1] & { config?: string }; -type Options = Parameters[2]; - -export function getConfig(args: Args, options?: Options, entryPath?: string) { - const configPath = - args.config || (entryPath && findWranglerConfig(path.dirname(entryPath))); - return readConfig(configPath, args, options); -}