Merge pull request #1189 from mikepenz/feature/optimize_tag_retrieval
Optimize tag retrieval if fully specified
This commit is contained in:
+9796
-25107
File diff suppressed because one or more lines are too long
+1
-1
File diff suppressed because one or more lines are too long
+42
-38
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user