- 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}}" customConfig.pr_template = "${{BODY}} ----> ${{C_PLACEHOLDER_1}}"
const resultChangelog = buildChangelog(DefaultDiffInfo, mergedPullRequests, { 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; let transformedChangelog = config.template || configuration_1.DefaultConfiguration.template;
transformedChangelog = replacePlaceholders(transformedChangelog, placeholderMap, placeholders, placeholderPrMap); transformedChangelog = replacePlaceholders(transformedChangelog, placeholderMap, placeholders, placeholderPrMap);
transformedChangelog = replacePrPlaceholders(transformedChangelog, placeholderPrMap); transformedChangelog = replacePrPlaceholders(transformedChangelog, placeholderPrMap);
transformedChangelog = cleanupPrPlaceHolders(transformedChangelog, placeholders);
core.info(`️ Filled template`); core.info(`️ Filled template`);
return transformedChangelog; return transformedChangelog;
} }
@@ -1733,6 +1734,15 @@ function replacePrPlaceholders(template, placeholderPrMap /* map with all pr rel
} }
return transformed; 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) { function transform(filled, transformers) {
if (transformers.length === 0) { if (transformers.length === 0) {
return filled; 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 let transformedChangelog = config.template || DefaultConfiguration.template
transformedChangelog = replacePlaceholders(transformedChangelog, placeholderMap, placeholders, placeholderPrMap) transformedChangelog = replacePlaceholders(transformedChangelog, placeholderMap, placeholders, placeholderPrMap)
transformedChangelog = replacePrPlaceholders(transformedChangelog, placeholderPrMap) transformedChangelog = replacePrPlaceholders(transformedChangelog, placeholderPrMap)
transformedChangelog = cleanupPrPlaceHolders(transformedChangelog, placeholders)
core.info(`️ Filled template`) core.info(`️ Filled template`)
return transformedChangelog return transformedChangelog
} }
@@ -361,6 +362,19 @@ function replacePrPlaceholders(
return transformed 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 { function transform(filled: string, transformers: RegexTransformer[]): string {
if (transformers.length === 0) { if (transformers.length === 0) {
return filled return filled