1 | const R = require('ramda')
|
2 | const leavePublic = require('new-public-commits').leavePublic
|
3 | const newPublicCommits = require('new-public-commits').newPublicCommits
|
4 | const { stripIndent } = require('common-tags')
|
5 | const la = require('lazy-ass')
|
6 | const is = require('check-more-types')
|
7 |
|
8 | function commitsToString (commits) {
|
9 | const filtered = leavePublic(commits)
|
10 | return R.map(R.prop('message'))(filtered).join('\n')
|
11 | }
|
12 |
|
13 | function getDateString () {
|
14 | const d = new Date()
|
15 | return d.toISOString().split('T')[0]
|
16 | }
|
17 |
|
18 | function versionAndCommitsToLog (version, commits) {
|
19 | const date = getDateString()
|
20 | const head = stripIndent`
|
21 | <a name="${version}"></a>
|
22 | # ${version} (${date})
|
23 | `
|
24 | const commitsLog = commitsToString(commits)
|
25 | return head + '\n' + commitsLog
|
26 | }
|
27 |
|
28 | function formChangelog (version) {
|
29 | la(is.unemptyString(version), 'missing release version')
|
30 | return newPublicCommits().then(commits =>
|
31 | versionAndCommitsToLog(version, commits)
|
32 | )
|
33 | }
|
34 |
|
35 | module.exports = { formChangelog, versionAndCommitsToLog, commitsToString }
|