68 lines
1.6 KiB
JavaScript
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)
|
|
})
|