diff --git a/README.md b/README.md index d21e83809..489b47ad0 100644 --- a/README.md +++ b/README.md @@ -118,6 +118,7 @@ You can configure Release Drafter using the following key in your `.github/relea | `change-template` | Optional | The template to use for each merged pull request. Use [change template variables](#change-template-variables) to insert values. Default: `"* $TITLE (#$NUMBER) @$AUTHOR"`. | | `change-title-escapes` | Optional | Characters to escape in `$TITLE` when inserting into `change-template` so that they are not interpreted as Markdown format characters. Default: `""` | | `no-changes-template` | Optional | The template to use for when there’s no changes. Default: `"* No changes"`. | +| `use-latest-public` | Optional | If `true`, compile a list since the latest public release and ignore pre-release. Default: `true`. | | `references` | Optional | The references to listen for configuration updates to `.github/release-drafter.yml`. Refer to [References](#references) to learn more about this | | `categories` | Optional | Categorize pull requests using labels. Refer to [Categorize Pull Requests](#categorize-pull-requests) to learn more about this option. | | `exclude-labels` | Optional | Exclude pull requests using labels. Refer to [Exclude Pull Requests](#exclude-pull-requests) to learn more about this option. | diff --git a/index.js b/index.js index a4babd9d7..997d22d38 100644 --- a/index.js +++ b/index.js @@ -165,6 +165,7 @@ module.exports = (app, { getRouter }) => { context, targetCommitish, filterByCommitish, + config, }) const { commits, pullRequests: mergedPullRequests } = diff --git a/lib/default-config.js b/lib/default-config.js index 69b9a00f3..07c96a606 100644 --- a/lib/default-config.js +++ b/lib/default-config.js @@ -6,6 +6,7 @@ const DEFAULT_CONFIG = Object.freeze({ 'change-template': `* $TITLE (#$NUMBER) @$AUTHOR`, 'change-title-escapes': '', 'no-changes-template': `* No changes`, + 'use-latest-public': true, 'version-template': `$MAJOR.$MINOR.$PATCH`, 'version-resolver': { major: { labels: [] }, diff --git a/lib/releases.js b/lib/releases.js index 009c2747d..df7767a13 100644 --- a/lib/releases.js +++ b/lib/releases.js @@ -24,6 +24,7 @@ const findReleases = async ({ context, targetCommitish, filterByCommitish, + config, }) => { let releaseCount = 0 let releases = await context.octokit.paginate( @@ -47,9 +48,12 @@ const findReleases = async ({ ? releases.filter((r) => targetCommitish.match(`/${r.target_commitish}$`)) : releases const sortedPublishedReleases = sortReleases( - filteredReleases.filter((r) => !r.draft) + filteredReleases.filter( + (r) => !r.draft && !(config['use-latest-public'] && r.prerelease) + ) ) const draftRelease = filteredReleases.find((r) => r.draft) + const preRelease = filteredReleases.find((r) => r.prerelease) const lastRelease = sortedPublishedReleases[sortedPublishedReleases.length - 1] @@ -59,6 +63,14 @@ const findReleases = async ({ log({ context, message: `No draft release found` }) } + if (config['use-latest-public']) { + if (preRelease) { + log({ context, message: `Pre-release: ${preRelease.tag_name}` }) + } else { + log({ context, message: `No pre-release found` }) + } + } + if (lastRelease) { log({ context, message: `Last release: ${lastRelease.tag_name}` }) } else { diff --git a/lib/schema.js b/lib/schema.js index a4368cb79..79dd58bc1 100644 --- a/lib/schema.js +++ b/lib/schema.js @@ -31,6 +31,10 @@ const schema = (context) => { DEFAULT_CONFIG['no-changes-template'] ), + 'use-latest-public': Joi.boolean().default( + DEFAULT_CONFIG['use-latest-public'] + ), + 'version-template': Joi.string().default( DEFAULT_CONFIG['version-template'] ),