conventional-changelog-action/src/helpers/generateChangelog.js

68 lines
1.6 KiB
JavaScript

const fs = require('fs')
const conventionalChangelog = require('conventional-changelog')
/**
* Generates a changelog stream with the given arguments
*
* @param tagPrefix
* @param preset
* @param version
* @param releaseCount
* @returns {*}
*/
const getChangelogStream = (tagPrefix, preset, version, releaseCount, config) => conventionalChangelog({
preset,
releaseCount: parseInt(releaseCount, 10),
tagPrefix,
config
},
{
version,
currentTag: `${tagPrefix}${version}`,
},
{},
config && config.parserOpts,
config && config.writerOpts
)
module.exports = getChangelogStream
/**
* Generates a string changelog
*
* @param tagPrefix
* @param preset
* @param version
* @param releaseCount
* @returns {Promise<string>}
*/
module.exports.generateStringChangelog = (tagPrefix, preset, version, releaseCount, config) => new Promise((resolve, reject) => {
const changelogStream = getChangelogStream(tagPrefix, preset, version, releaseCount, config)
let changelog = ''
changelogStream
.on('data', (data) => {
changelog += data.toString()
})
.on('end', () => resolve(changelog))
})
/**
* Generates a file changelog
*
* @param tagPrefix
* @param preset
* @param version
* @param fileName
* @param releaseCount
* @returns {Promise<>}
*/
module.exports.generateFileChangelog = (tagPrefix, preset, version, fileName, releaseCount, config) => new Promise((resolve) => {
const changelogStream = getChangelogStream(tagPrefix, preset, version, releaseCount, config)
changelogStream
.pipe(fs.createWriteStream(fileName))
.on('finish', resolve)
})