- introduce new on_property field for Extractor allowing to define the property to use for the label extraction
- use property (if provided) and allow label extraction via this approach - FIX https://github.com/mikepenz/release-changelog-builder-action/issues/208
This commit is contained in:
@@ -9,7 +9,7 @@ export interface Configuration {
|
||||
empty_template: string
|
||||
categories: Category[]
|
||||
ignore_labels: string[]
|
||||
label_extractor: Transformer[]
|
||||
label_extractor: Extractor[]
|
||||
transformers: Transformer[]
|
||||
tag_resolver: TagResolver
|
||||
}
|
||||
@@ -24,6 +24,10 @@ export interface Transformer {
|
||||
target: string
|
||||
}
|
||||
|
||||
export interface Extractor extends Transformer {
|
||||
on_property: 'title' | 'author' | 'milestone' | 'body' | undefined
|
||||
}
|
||||
|
||||
export interface TagResolver {
|
||||
method: string // semver, sort
|
||||
}
|
||||
|
||||
+24
-3
@@ -2,6 +2,7 @@ import {PullRequestInfo, sortPullRequests} from './pullRequests'
|
||||
import * as core from '@actions/core'
|
||||
import {ReleaseNotesOptions} from './releaseNotes'
|
||||
import {
|
||||
Extractor,
|
||||
Category,
|
||||
Configuration,
|
||||
Transformer,
|
||||
@@ -24,7 +25,19 @@ export function buildChangelog(
|
||||
for (const extractor of labelExtractors) {
|
||||
if (extractor.pattern != null) {
|
||||
for (const pr of prs) {
|
||||
const label = pr.body.replace(extractor.pattern, extractor.target)
|
||||
let label
|
||||
if (extractor.onProperty !== undefined) {
|
||||
let value: string = pr[extractor.onProperty]
|
||||
if (value === undefined) {
|
||||
core.warning(
|
||||
`⚠️ the provided property '${extractor.onProperty}' for \`label_extractor\` is not valid`
|
||||
)
|
||||
value = pr['body']
|
||||
}
|
||||
label = value.replace(extractor.pattern, extractor.target)
|
||||
} else {
|
||||
label = pr.body.replace(extractor.pattern, extractor.target)
|
||||
}
|
||||
if (label !== '') {
|
||||
pr.labels.push(label)
|
||||
}
|
||||
@@ -222,15 +235,22 @@ function validateTransfomers(
|
||||
return transformers
|
||||
.map(transformer => {
|
||||
try {
|
||||
let onProperty = undefined
|
||||
if (transformer.hasOwnProperty('on_property')) {
|
||||
onProperty = (transformer as Extractor).on_property
|
||||
}
|
||||
|
||||
return {
|
||||
pattern: new RegExp(transformer.pattern.replace('\\\\', '\\'), 'gu'),
|
||||
target: transformer.target
|
||||
target: transformer.target,
|
||||
onProperty
|
||||
}
|
||||
} catch (e) {
|
||||
core.warning(`⚠️ Bad replacer regex: ${transformer.pattern}`)
|
||||
return {
|
||||
pattern: null,
|
||||
target: ''
|
||||
target: '',
|
||||
onProperty: undefined
|
||||
}
|
||||
}
|
||||
})
|
||||
@@ -240,4 +260,5 @@ function validateTransfomers(
|
||||
interface RegexTransformer {
|
||||
pattern: RegExp | null
|
||||
target: string
|
||||
onProperty: 'title' | 'author' | 'milestone' | 'body' | undefined
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user