- add logic which cleans up custom placeholders with the [] syntax which were not matched

This commit is contained in:
Mike Penz
2022-07-29 16:40:39 +00:00
committed by GitHub
parent fba9cdb51d
commit 74dd88f60c
4 changed files with 26 additions and 2 deletions
+1 -1
View File
@@ -605,7 +605,7 @@ it('Extract custom placeholder from PR body and replace in global template', asy
}
}
]
customConfig.template = "${{CHANGELOG}}\n\n${{C_PLACEHOLER_2[2]}}\n\n${{C_PLACEHOLER_2[*]}}"
customConfig.template = "${{CHANGELOG}}\n\n${{C_PLACEHOLER_2[2]}}\n\n${{C_PLACEHOLER_2[*]}}${{C_PLACEHOLDER_1[7]}}${{C_PLACEHOLER_2[1493]}}"
customConfig.pr_template = "${{BODY}} ----> ${{C_PLACEHOLDER_1}}"
const resultChangelog = buildChangelog(DefaultDiffInfo, mergedPullRequests, {
Generated Vendored
+10
View File
@@ -1648,6 +1648,7 @@ function buildChangelog(diffInfo, prs, options) {
let transformedChangelog = config.template || configuration_1.DefaultConfiguration.template;
transformedChangelog = replacePlaceholders(transformedChangelog, placeholderMap, placeholders, placeholderPrMap);
transformedChangelog = replacePrPlaceholders(transformedChangelog, placeholderPrMap);
transformedChangelog = cleanupPrPlaceHolders(transformedChangelog, placeholders);
core.info(`️ Filled template`);
return transformedChangelog;
}
@@ -1733,6 +1734,15 @@ function replacePrPlaceholders(template, placeholderPrMap /* map with all pr rel
}
return transformed;
}
function cleanupPrPlaceHolders(template, placeholders /* placeholders to apply */) {
let transformed = template;
for (const [, phs] of placeholders) {
for (const ph of phs) {
transformed = transformed.replaceAll(new RegExp(`\\$\\{\\{${ph.name}\\[.+?\\]\\}\\}`, 'gu'), '');
}
}
return transformed;
}
function transform(filled, transformers) {
if (transformers.length === 0) {
return filled;
Generated Vendored
+1 -1
View File
File diff suppressed because one or more lines are too long
+14
View File
@@ -255,6 +255,7 @@ export function buildChangelog(diffInfo: DiffInfo, prs: PullRequestInfo[], optio
let transformedChangelog = config.template || DefaultConfiguration.template
transformedChangelog = replacePlaceholders(transformedChangelog, placeholderMap, placeholders, placeholderPrMap)
transformedChangelog = replacePrPlaceholders(transformedChangelog, placeholderPrMap)
transformedChangelog = cleanupPrPlaceHolders(transformedChangelog, placeholders)
core.info(`️ Filled template`)
return transformedChangelog
}
@@ -361,6 +362,19 @@ function replacePrPlaceholders(
return transformed
}
function cleanupPrPlaceHolders(
template: string,
placeholders: Map<string, Placeholder[]> /* placeholders to apply */
): string {
let transformed = template
for (const [, phs] of placeholders) {
for (const ph of phs) {
transformed = transformed.replaceAll(new RegExp(`\\$\\{\\{${ph.name}\\[.+?\\]\\}\\}`, 'gu'), '')
}
}
return transformed
}
function transform(filled: string, transformers: RegexTransformer[]): string {
if (transformers.length === 0) {
return filled