2b27d9f6a2
* add scripts to help with automating releases * add prepare-release and release workflows * bump actions from v2 to v3 * use `github.ref_name` for getting the tag name * ensure we use `**` for matching tags with slashes in them
30 lines
883 B
JavaScript
30 lines
883 B
JavaScript
// Given a version, figure out what the release notes are so that we can use this to pre-fill the
|
|
// relase notes on a GitHub release for the current version.
|
|
|
|
let path = require('path')
|
|
let fs = require('fs')
|
|
let { execSync } = require('child_process')
|
|
|
|
let tag = process.argv[2] || execSync(`git describe --tags --abbrev=0`).toString().trim()
|
|
let pkgPath = path.resolve(
|
|
__dirname,
|
|
'..',
|
|
'packages',
|
|
tag.slice(0, tag.indexOf('@', 1)).replace('/', '-')
|
|
)
|
|
|
|
let version = require(path.resolve(pkgPath, 'package.json')).version
|
|
|
|
let changelog = fs.readFileSync(path.resolve(pkgPath, 'CHANGELOG.md'), 'utf8')
|
|
let match = new RegExp(
|
|
`## \\[${version}\\] - (.*)\\n\\n([\\s\\S]*?)\\n(?:(?:##\\s)|(?:\\[))`,
|
|
'g'
|
|
).exec(changelog)
|
|
|
|
if (match) {
|
|
let [, , notes] = match
|
|
console.log(notes.trim())
|
|
} else {
|
|
console.log(`Placeholder release notes for version: v${version}`)
|
|
}
|