/
releases.js
37 lines (30 loc) · 1 KB
/
releases.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
const compareVersions = require('compare-versions')
module.exports.findReleases = async ({ context }) => {
let releases = await context.github.paginate(
context.github.repos.getReleases(context.repo()),
res => res.data
)
const sortedPublishedReleases = releases
.filter(r => !r.draft)
.sort((r1, r2) => compareVersions(r1.tag_name, r2.tag_name))
return {
draftRelease: releases.find((r) => r.draft),
lastRelease: sortedPublishedReleases[sortedPublishedReleases.length - 1]
}
}
module.exports.generateReleaseBody = ({ config, lastRelease, mergedPullRequests }) => {
let body = config.template
if (lastRelease) {
body = body.replace('$PREVIOUS_TAG', lastRelease.tag_name)
}
if (lastRelease) {
if (mergedPullRequests.length === 0) {
body = body.replace('$CHANGES', '* No changes')
} else {
body = body.replace('$CHANGES', mergedPullRequests.map(pr => (
`* ${pr.title} #${pr.number} (@${pr.user.login})`
)).join('\n'))
}
}
return body
}