From 6af2be726ca471db786d8279ac23180c29f68515 Mon Sep 17 00:00:00 2001 From: Michael Kriese <michael.kriese@visualon.de> Date: Wed, 29 Nov 2023 02:29:32 +0100 Subject: [PATCH] fix(templates): use re2 for replace helper (#26019) --- lib/util/template/index.spec.ts | 9 +++++++++ lib/util/template/index.ts | 8 +++----- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/lib/util/template/index.spec.ts b/lib/util/template/index.spec.ts index e0a1c90d82..308de56193 100644 --- a/lib/util/template/index.spec.ts +++ b/lib/util/template/index.spec.ts @@ -114,6 +114,15 @@ describe('util/template/index', () => { expect(output).toBe('CUSTOM_FOO is foo'); }); + it('replace', () => { + const userTemplate = + "{{ replace '[a-z]+\\.github\\.com' 'ghc' depName }}{{ replace 'some' 'other' depType }}"; + const output = template.compile(userTemplate, { + depName: 'some.github.com/dep', + }); + expect(output).toBe('ghc/dep'); + }); + describe('proxyCompileInput', () => { const allowedField = 'body'; const allowedArrayField = 'prBodyNotes'; diff --git a/lib/util/template/index.ts b/lib/util/template/index.ts index c83a79eaa6..0334ad61e4 100644 --- a/lib/util/template/index.ts +++ b/lib/util/template/index.ts @@ -3,6 +3,7 @@ import handlebars from 'handlebars'; import { GlobalConfig } from '../../config/global'; import { logger } from '../../logger'; import { getChildEnv } from '../exec/utils'; +import { regEx } from '../regex'; handlebars.registerHelper('encodeURIComponent', encodeURIComponent); handlebars.registerHelper('decodeURIComponent', decodeURIComponent); @@ -11,11 +12,8 @@ handlebars.registerHelper('stringToPrettyJSON', (input: string): string => JSON.stringify(JSON.parse(input), null, 2), ); -// istanbul ignore next -handlebars.registerHelper( - 'replace', - (find, replace, context) => - (context || '').replace(new RegExp(find, 'g'), replace), // TODO #12873 +handlebars.registerHelper('replace', (find, replace, context) => + (context ?? '').replace(regEx(find, 'g'), replace), ); handlebars.registerHelper('lowercase', (str: string) => str?.toLowerCase()); -- GitLab