From b268aa9f988409dccfe4aa78e1d2338f8818ddf1 Mon Sep 17 00:00:00 2001 From: naman-bruno Date: Fri, 30 Jan 2026 15:37:56 +0530 Subject: [PATCH] fix: global environment flag for cli (#6969) * fix: global environment flag for cli * fixes --- packages/bruno-cli/src/commands/run.js | 11 ++++------- packages/bruno-cli/src/runner/interpolate-string.js | 5 ++++- packages/bruno-cli/src/runner/interpolate-vars.js | 2 ++ packages/bruno-cli/src/runner/run-single-request.js | 12 ++++++++++-- 4 files changed, 20 insertions(+), 10 deletions(-) diff --git a/packages/bruno-cli/src/commands/run.js b/packages/bruno-cli/src/commands/run.js index 78b9dc259..9691df431 100644 --- a/packages/bruno-cli/src/commands/run.js +++ b/packages/bruno-cli/src/commands/run.js @@ -467,11 +467,6 @@ const handler = async function (argv) { console.error(chalk.red(`Failed to parse global environment: ${err.message}`)); process.exit(constants.EXIT_STATUS.ERROR_INVALID_FILE); } - - envVars = { ...globalEnvVars, ...envVars }; - if (!envVars.__name__ && globalEnvVars.__name__) { - envVars.__name__ = globalEnvVars.__name__; - } } if (envVar) { @@ -632,7 +627,8 @@ const handler = async function (argv) { collectionRoot, runtime, collection, - runSingleRequestByPathname + runSingleRequestByPathname, + globalEnvVars ); resolve(res?.response); } @@ -657,7 +653,8 @@ const handler = async function (argv) { collectionRoot, runtime, collection, - runSingleRequestByPathname + runSingleRequestByPathname, + globalEnvVars ); const isLastRun = currentRequestIndex === requestItems.length - 1; diff --git a/packages/bruno-cli/src/runner/interpolate-string.js b/packages/bruno-cli/src/runner/interpolate-string.js index 20c395d71..4e21a684f 100644 --- a/packages/bruno-cli/src/runner/interpolate-string.js +++ b/packages/bruno-cli/src/runner/interpolate-string.js @@ -7,13 +7,15 @@ const buildCombinedVars = ({ folderVariables, requestVariables, runtimeVariables, - processEnvVars + processEnvVars, + globalEnvVars }) => { processEnvVars = processEnvVars || {}; runtimeVariables = runtimeVariables || {}; collectionVariables = collectionVariables || {}; folderVariables = folderVariables || {}; requestVariables = requestVariables || {}; + globalEnvVars = globalEnvVars || {}; // we clone envVars because we don't want to modify the original object envVars = envVars ? cloneDeep(envVars) : {}; @@ -32,6 +34,7 @@ const buildCombinedVars = ({ // runtimeVariables take precedence over envVars return { + ...globalEnvVars, ...collectionVariables, ...envVars, ...folderVariables, diff --git a/packages/bruno-cli/src/runner/interpolate-vars.js b/packages/bruno-cli/src/runner/interpolate-vars.js index 3bf0bc142..659eaf53f 100644 --- a/packages/bruno-cli/src/runner/interpolate-vars.js +++ b/packages/bruno-cli/src/runner/interpolate-vars.js @@ -15,6 +15,7 @@ const getContentType = (headers = {}) => { }; const interpolateVars = (request, envVariables = {}, runtimeVariables = {}, processEnvVars = {}) => { + const globalEnvironmentVariables = request?.globalEnvironmentVariables || {}; const collectionVariables = request?.collectionVariables || {}; const folderVariables = request?.folderVariables || {}; const requestVariables = request?.requestVariables || {}; @@ -41,6 +42,7 @@ const interpolateVars = (request, envVariables = {}, runtimeVariables = {}, proc // runtimeVariables take precedence over envVars const combinedVars = { + ...globalEnvironmentVariables, ...collectionVariables, ...envVariables, ...folderVariables, diff --git a/packages/bruno-cli/src/runner/run-single-request.js b/packages/bruno-cli/src/runner/run-single-request.js index f5dc104ee..da813c623 100644 --- a/packages/bruno-cli/src/runner/run-single-request.js +++ b/packages/bruno-cli/src/runner/run-single-request.js @@ -44,9 +44,10 @@ const getCACertHostRegex = (domain) => { * @returns {string[]} An array of extracted prompt variables */ const extractPromptVariablesForRequest = ({ request, collection, envVariables, runtimeVariables, processEnvVars, brunoConfig }) => { - const { vars, collectionVariables, folderVariables, requestVariables, ...requestObj } = request; + const { vars, collectionVariables, folderVariables, requestVariables, globalEnvironmentVariables, ...requestObj } = request; const allVariables = { + ...globalEnvironmentVariables, ...envVariables, ...collectionVariables, ...folderVariables, @@ -63,6 +64,7 @@ const extractPromptVariablesForRequest = ({ request, collection, envVariables, r prompts.push(...extractPromptVariables(allVariables)); const interpolationOptions = { + globalEnvVars: globalEnvironmentVariables, envVars: envVariables, runtimeVariables, processEnvVars @@ -94,7 +96,8 @@ const runSingleRequest = async function ( collectionRoot, runtime, collection, - runSingleRequestByPathname + runSingleRequestByPathname, + globalEnvVars = {} ) { const { pathname: itemPathname } = item; const relativeItemPathname = path.relative(collectionPath, itemPathname); @@ -127,6 +130,9 @@ const runSingleRequest = async function ( request = await prepareRequest(item, collection); + // Set global environment variables on the request for scripts to access via bru.getGlobalEnvVar() + request.globalEnvironmentVariables = globalEnvVars; + // Detect prompt variables before proceeding const promptVars = extractPromptVariablesForRequest({ request, collection, envVariables, runtimeVariables, processEnvVars, brunoConfig }); @@ -247,6 +253,7 @@ const runSingleRequest = async function ( } const interpolationOptions = { + globalEnvVars: request.globalEnvironmentVariables || {}, envVars: envVariables, runtimeVariables, processEnvVars @@ -471,6 +478,7 @@ const runSingleRequest = async function ( try { // Prepare interpolation options with all available variables const oauth2InterpolationOptions = { + globalEnvVars: request.globalEnvironmentVariables || {}, envVars: envVariables, runtimeVariables, processEnvVars,