Merge pull request #1189 from mikepenz/feature/optimize_tag_retrieval

Optimize tag retrieval if fully specified
This commit is contained in:
Mike Penz
2023-08-02 17:24:50 +02:00
committed by GitHub
3 changed files with 9839 additions and 25146 deletions
Generated Vendored
+9796 -25107
View File
File diff suppressed because one or more lines are too long
Generated Vendored
+1 -1
View File
File diff suppressed because one or more lines are too long
+42 -38
View File
@@ -140,48 +140,52 @@ export class Tags {
maxTagsToFetch: number, maxTagsToFetch: number,
tagResolver: TagResolver tagResolver: TagResolver
): Promise<TagResult> { ): Promise<TagResult> {
// filter out tags not matching the specified filter let tags: TagInfo[] = []
const filteredTags = filterTags(
// retrieve the tags from the API
await this.getTags(owner, repo, maxTagsToFetch),
tagResolver
)
// check if a transformer, legacy handling, transform single value input to array if (!toTag || !fromTag) {
let tagTransfomers: Transformer[] | undefined = undefined // filter out tags not matching the specified filter
if (tagResolver.transformer !== undefined) { const filteredTags = filterTags(
if (!Array.isArray(tagResolver.transformer)) { // retrieve the tags from the API
tagTransfomers = [tagResolver.transformer] await this.getTags(owner, repo, maxTagsToFetch),
} else { tagResolver
tagTransfomers = tagResolver.transformer )
}
}
let transformed = false // check if a transformer, legacy handling, transform single value input to array
let transformedTags: TagInfo[] = filteredTags let tagTransfomers: Transformer[] | undefined = undefined
if (tagTransfomers !== undefined && tagTransfomers.length > 0) { if (tagResolver.transformer !== undefined) {
for (const transformer of tagTransfomers) { if (!Array.isArray(tagResolver.transformer)) {
const tagTransformer = validateTransformer(transformer) tagTransfomers = [tagResolver.transformer]
if (tagTransformer != null) {
core.debug(`️ Using configured tagTransformer (${transformer.pattern})`)
transformedTags = transformTags(transformedTags, tagTransformer)
transformed = true
}
}
}
// sort tags, apply additional information (e.g. if tag is a pre release)
let tags = prepareAndSortTags(transformedTags, tagResolver)
if (transformed) {
// restore the original name, after sorting
tags = filteredTags.map(function (tag) {
if (tag.hasOwnProperty('tmp')) {
return {name: (tag as SortableTagInfo).tmp, commit: tag.commit}
} else { } else {
return tag tagTransfomers = tagResolver.transformer
} }
}) }
let transformed = false
let transformedTags: TagInfo[] = filteredTags
if (tagTransfomers !== undefined && tagTransfomers.length > 0) {
for (const transformer of tagTransfomers) {
const tagTransformer = validateTransformer(transformer)
if (tagTransformer != null) {
core.debug(`️ Using configured tagTransformer (${transformer.pattern})`)
transformedTags = transformTags(transformedTags, tagTransformer)
transformed = true
}
}
}
// sort tags, apply additional information (e.g. if tag is a pre release)
tags = prepareAndSortTags(transformedTags, tagResolver)
if (transformed) {
// restore the original name, after sorting
tags = filteredTags.map(function (tag) {
if (tag.hasOwnProperty('tmp')) {
return {name: (tag as SortableTagInfo).tmp, commit: tag.commit}
} else {
return tag
}
})
}
} }
let resultToTag: TagInfo | null let resultToTag: TagInfo | null