There was an issue with the "unreleased" link tag, which had been converted to lowercase by Prettier.
46 lines
1.5 KiB
TypeScript
46 lines
1.5 KiB
TypeScript
import fs from 'fs'
|
|
import path from 'path'
|
|
|
|
const currentVersion = require('../package.json').version
|
|
if (!currentVersion) throw new Error("Cant't detect library version.")
|
|
|
|
const changelogPath = path.resolve(__dirname, '../CHANGELOG.md')
|
|
const changelog = fs.readFileSync(changelogPath, { encoding: 'utf-8' })
|
|
if (changelog.includes(`## [${currentVersion}]`))
|
|
throw new Error('Current version has already been documented.')
|
|
let futureChangelog = ''
|
|
|
|
// Add version section
|
|
let arr = changelog.split('## [Unreleased]')
|
|
arr[1] =
|
|
`
|
|
|
|
## [${currentVersion}] - ${new Date().toISOString().slice(0, 10)}
|
|
### Removed:
|
|
- **[BREAKING]** ListName: description
|
|
|
|
### Added:
|
|
-
|
|
|
|
### Fixed:
|
|
- ` + arr[1]
|
|
futureChangelog = arr.join('## [Unreleased]')
|
|
|
|
// Update footer
|
|
arr = futureChangelog.split('\n').map((line) =>
|
|
line.startsWith('[unreleased]') // The link ref is lowercase because of prettier
|
|
? `[unreleased]: https://github.com/EndBug/add-and-commit/compare/v${currentVersion}...HEAD`
|
|
: line
|
|
)
|
|
|
|
const lastVersion = ([...arr].reverse()[1]?.match(/\[([^\][]*)]/) ||
|
|
[])[0].replace(/[\[\]']+/g, '') // eslint-disable-line no-useless-escape
|
|
if (!lastVersion) throw new Error("Can't find last version in changelog.")
|
|
|
|
const lastLine = `[${currentVersion}]: https://github.com/EndBug/add-and-commit/compare/v${lastVersion}...v${currentVersion}`
|
|
if (arr[arr.length - 1] === '') arr[arr.length - 1] = lastLine
|
|
else arr.push(lastLine)
|
|
futureChangelog = arr.join('\n')
|
|
|
|
fs.writeFileSync(changelogPath, futureChangelog)
|