asdf
Squash the current repository state back into one baseline commit while preserving the README reframing and repository contents. Constraint: User explicitly requested a single squashed commit with subject "asdf" Confidence: high Scope-risk: broad Reversibility: clean Directive: This commit intentionally rewrites published history; coordinate before future force-pushes Tested: git status clean; local history rewritten to one commit; force-pushed main to origin and instructkr Not-tested: Fresh clone verification after push
This commit is contained in:
commit
d2542c9a62
38
src/services/mcp/envExpansion.ts
Normal file
38
src/services/mcp/envExpansion.ts
Normal file
@@ -0,0 +1,38 @@
|
||||
/**
|
||||
* Shared utilities for expanding environment variables in MCP server configurations
|
||||
*/
|
||||
|
||||
/**
|
||||
* Expand environment variables in a string value
|
||||
* Handles ${VAR} and ${VAR:-default} syntax
|
||||
* @returns Object with expanded string and list of missing variables
|
||||
*/
|
||||
export function expandEnvVarsInString(value: string): {
|
||||
expanded: string
|
||||
missingVars: string[]
|
||||
} {
|
||||
const missingVars: string[] = []
|
||||
|
||||
const expanded = value.replace(/\$\{([^}]+)\}/g, (match, varContent) => {
|
||||
// Split on :- to support default values (limit to 2 parts to preserve :- in defaults)
|
||||
const [varName, defaultValue] = varContent.split(':-', 2)
|
||||
const envValue = process.env[varName]
|
||||
|
||||
if (envValue !== undefined) {
|
||||
return envValue
|
||||
}
|
||||
if (defaultValue !== undefined) {
|
||||
return defaultValue
|
||||
}
|
||||
|
||||
// Track missing variable for error reporting
|
||||
missingVars.push(varName)
|
||||
// Return original if not found (allows debugging but will be reported as error)
|
||||
return match
|
||||
})
|
||||
|
||||
return {
|
||||
expanded,
|
||||
missingVars,
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user