- add capability to ignore any pre-release releases from matching against, only relevant if no fromTag is specified
- protect against issue if no previous tag is available
This commit is contained in:
@@ -33,6 +33,8 @@ async function run(): Promise<void> {
|
||||
const fromTag = core.getInput('fromTag')
|
||||
let toTag = core.getInput('toTag')
|
||||
|
||||
const ignorePreReleases = core.getInput('ignorePreReleases')
|
||||
|
||||
if (!toTag) {
|
||||
// if not specified try to retrieve tag from git
|
||||
const gitHelper = await createCommandManager(repositoryPath)
|
||||
@@ -87,6 +89,7 @@ async function run(): Promise<void> {
|
||||
repo,
|
||||
fromTag,
|
||||
toTag,
|
||||
ignorePreReleases: ignorePreReleases === 'true',
|
||||
configuration
|
||||
})
|
||||
|
||||
|
||||
+8
-6
@@ -7,11 +7,12 @@ import {Tags} from './tags'
|
||||
import {Configuration, DefaultConfiguration} from './configuration'
|
||||
|
||||
export interface ReleaseNotesOptions {
|
||||
owner: string
|
||||
repo: string
|
||||
fromTag: string | null
|
||||
toTag: string
|
||||
configuration: Configuration
|
||||
owner: string // the owner of the repository
|
||||
repo: string // the repository
|
||||
fromTag: string | null // the tag/ref to start from
|
||||
toTag: string // the tag/ref up to
|
||||
ignorePreReleases: boolean // defines if we should ignore any pre-releases for matching, only relevant if fromTag is null
|
||||
configuration: Configuration // the configuration as defined in `configuration.ts`
|
||||
}
|
||||
|
||||
export class ReleaseNotes {
|
||||
@@ -22,7 +23,7 @@ export class ReleaseNotes {
|
||||
auth: `token ${token || process.env.GITHUB_TOKEN}`
|
||||
})
|
||||
|
||||
const {owner, repo, toTag, configuration} = this.options
|
||||
const {owner, repo, toTag, ignorePreReleases, configuration} = this.options
|
||||
|
||||
if (!this.options.fromTag) {
|
||||
core.debug(`fromTag undefined, trying to resolve via API`)
|
||||
@@ -32,6 +33,7 @@ export class ReleaseNotes {
|
||||
owner,
|
||||
repo,
|
||||
toTag,
|
||||
ignorePreReleases,
|
||||
configuration.max_tags_to_fetch
|
||||
? configuration.max_tags_to_fetch
|
||||
: DefaultConfiguration.max_tags_to_fetch
|
||||
|
||||
+20
-7
@@ -49,19 +49,32 @@ export class Tags {
|
||||
owner: string,
|
||||
repo: string,
|
||||
tag: string,
|
||||
ignorePreReleases: boolean,
|
||||
maxTagsToFetch: number
|
||||
): Promise<TagInfo | null> {
|
||||
const tags = this.sortTags(await this.getTags(owner, repo, maxTagsToFetch))
|
||||
|
||||
const length = tags.length
|
||||
for (let i = 0; i < length; i++) {
|
||||
if (tags[i].name.toLowerCase() === tag.toLowerCase()) {
|
||||
return tags[i + 1]
|
||||
try {
|
||||
const length = tags.length
|
||||
for (let i = 0; i < length; i++) {
|
||||
if (tags[i].name.toLowerCase() === tag.toLowerCase()) {
|
||||
if (ignorePreReleases) {
|
||||
core.info(
|
||||
`Enabled 'ignorePreReleases', searching for the closest release`
|
||||
)
|
||||
for (let ii = i + 1; ii < length; ii++) {
|
||||
if (!tags[ii].name.includes('-')) {
|
||||
return tags[ii]
|
||||
}
|
||||
}
|
||||
}
|
||||
return tags[i + 1]
|
||||
}
|
||||
}
|
||||
return tags[0]
|
||||
} catch (error) {
|
||||
return null
|
||||
}
|
||||
|
||||
// not found, throw exception?
|
||||
return tags[0]
|
||||
}
|
||||
|
||||
private sortTags(commits: TagInfo[]): TagInfo[] {
|
||||
|
||||
Reference in New Issue
Block a user