File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 2323 - 3.9.1
2424 - 3.10.0
2525 - 3.11.0
26+ - 3.12.0
2627 env :
2728 BACKEND_APISIX_VERSION : ${{ matrix.version }}
2829 BACKEND_APISIX_IMAGE : ${{ matrix.version }}-debian
Original file line number Diff line number Diff line change @@ -267,6 +267,9 @@ describe('CLI utils', () => {
267267 } ,
268268 ] ,
269269 } ,
270+ {
271+ name : 'Test escape \\${NAME}' ,
272+ } ,
270273 ] ,
271274 consumers : [
272275 {
@@ -322,6 +325,9 @@ describe('CLI utils', () => {
322325 name : 'Test name' ,
323326 routes : [ { name : 'Test name' , uris : [ '/test/name' ] } ] ,
324327 } ,
328+ {
329+ name : 'Test escape ${NAME}' ,
330+ } ,
325331 ] ,
326332 ssls : [
327333 {
Original file line number Diff line number Diff line change @@ -284,14 +284,21 @@ export const recursiveReplaceEnvVars = (
284284 dataSource = process . env ,
285285) : ADCSDK . Configuration => {
286286 const envVarRegex = / \$ \{ ( \w + ) \} / g;
287+ const escapedVarRegex = / \\ \$ \{ ( \w + ) \} / g;
288+ const placeholder = '__ESCAPED_ENV_VAR_PLACEHOLDER__' ;
287289 const replaceValue = ( value : unknown ) : unknown => {
288- if ( typeof value === 'string' )
289- return value . replace (
290- envVarRegex ,
291- ( _ , envVar ) => dataSource ?. [ envVar ] || '' ,
292- ) ;
290+ if ( typeof value !== 'string' ) return value ;
293291
294- return value ;
292+ const escaped = value . replace ( escapedVarRegex , ( _ , envVar ) => {
293+ return `${ placeholder } ${ envVar } ${ placeholder } ` ;
294+ } ) ;
295+ const replaced = escaped . replace ( envVarRegex , ( _ , envVar ) => {
296+ return dataSource ?. [ envVar ] || '' ;
297+ } ) ;
298+ return replaced . replace (
299+ new RegExp ( `${ placeholder } (\\w+)${ placeholder } ` , 'g' ) ,
300+ ( _ , envVar ) => `\${${ envVar } }` ,
301+ ) ;
295302 } ;
296303
297304 const recurseReplace = ( value : unknown ) : unknown =>
You can’t perform that action at this time.
0 commit comments