diff --git a/common/changes/@rushstack/ts-command-line/fix-env-var-name-in-error-message_2026-06-11.json b/common/changes/@rushstack/ts-command-line/fix-env-var-name-in-error-message_2026-06-11.json new file mode 100644 index 00000000000..c1c09a42776 --- /dev/null +++ b/common/changes/@rushstack/ts-command-line/fix-env-var-name-in-error-message_2026-06-11.json @@ -0,0 +1,11 @@ +{ + "changes": [ + { + "comment": "Fix an issue where the error thrown for an unparseable environment variable mentions the value instead of the name.", + "type": "patch", + "packageName": "@rushstack/ts-command-line" + } + ], + "packageName": "@rushstack/ts-command-line", + "email": "sshaurya914@gmail.com" +} diff --git a/libraries/ts-command-line/src/parameters/EnvironmentVariableParser.ts b/libraries/ts-command-line/src/parameters/EnvironmentVariableParser.ts index f25dd17b015..84dcffef739 100644 --- a/libraries/ts-command-line/src/parameters/EnvironmentVariableParser.ts +++ b/libraries/ts-command-line/src/parameters/EnvironmentVariableParser.ts @@ -30,14 +30,14 @@ export class EnvironmentVariableParser { !parsedJson.every((x) => typeof x === 'string' || typeof x === 'boolean' || typeof x === 'number') ) { throw new Error( - `The ${environmentValue} environment variable value must be a JSON ` + + `The ${envVarName} environment variable value must be a JSON ` + ` array containing only strings, numbers, and booleans.` ); } return parsedJson.map((x) => x.toString()); } catch (ex) { throw new Error( - `The ${environmentValue} environment variable value looks like a JSON array` + + `The ${envVarName} environment variable value looks like a JSON array` + ` but failed to parse: ` + (ex as Error).message ); diff --git a/libraries/ts-command-line/src/test/CommandLineParameter.test.ts b/libraries/ts-command-line/src/test/CommandLineParameter.test.ts index d8668b9c37a..c2416f73c47 100644 --- a/libraries/ts-command-line/src/test/CommandLineParameter.test.ts +++ b/libraries/ts-command-line/src/test/CommandLineParameter.test.ts @@ -439,7 +439,7 @@ describe(CommandLineParameterBase.name, () => { } expect(error).toMatch( - /^The \[u environment variable value looks like a JSON array but failed to parse: Unexpected token / + /^The ENV_COLOR environment variable value looks like a JSON array but failed to parse: Unexpected token / ); }); diff --git a/libraries/ts-command-line/src/test/__snapshots__/CommandLineParameter.test.ts.snap b/libraries/ts-command-line/src/test/__snapshots__/CommandLineParameter.test.ts.snap index b2fec498707..9d03ce2fb0b 100644 --- a/libraries/ts-command-line/src/test/__snapshots__/CommandLineParameter.test.ts.snap +++ b/libraries/ts-command-line/src/test/__snapshots__/CommandLineParameter.test.ts.snap @@ -30,7 +30,7 @@ Array [ ] `; -exports[`CommandLineParameterBase choice list raises an error if env var value is json containing non-scalars 1`] = `"The [{}] environment variable value looks like a JSON array but failed to parse: The [{}] environment variable value must be a JSON array containing only strings, numbers, and booleans."`; +exports[`CommandLineParameterBase choice list raises an error if env var value is json containing non-scalars 1`] = `"The ENV_COLOR environment variable value looks like a JSON array but failed to parse: The ENV_COLOR environment variable value must be a JSON array containing only strings, numbers, and booleans."`; exports[`CommandLineParameterBase choice list raises an error if env var value is not a valid choice 1`] = `"Invalid value \\"oblong\\" for the environment variable ENV_COLOR. Valid choices are: \\"purple\\", \\"yellow\\", \\"pizza\\""`;