Skip to content

Instantly share code, notes, and snippets.

@pouretrebelle
Created July 5, 2021 12:49
Show Gist options
  • Select an option

  • Save pouretrebelle/21be1d4df28a5fbace24bf7d9af4e294 to your computer and use it in GitHub Desktop.

Select an option

Save pouretrebelle/21be1d4df28a5fbace24bf7d9af4e294 to your computer and use it in GitHub Desktop.
Generate a CHANGELOG.md file from GitHub releases
const fs = require('fs')
const { Octokit } = require('@octokit/core')
const prettier = require('prettier')
const defaultPrettierConfig = require('../.prettierrc')
const prettierConfig = {
...defaultPrettierConfig,
parser: 'markdown',
}
// Create a personal access token at https://github.com/settings/tokens/new?scopes=repo
const octokit = new Octokit({
auth: `personal-access-token`,
})
const compile = async () => {
let content = ''
const res = await octokit.request('GET /repos/{owner}/{repo}/releases', {
owner: 'owner',
repo: 'repo',
per_page: 100,
})
res.data.forEach((release) => {
content += `
## [${release.tag_name.slice(1)}] - ${release.published_at.slice(0, 10)}
${release.body}
`
})
fs.writeFile(
'CHANGELOG.md',
prettier.format(content, prettierConfig),
'utf8',
(err) =>
// eslint-disable-next-line
console.log(err ? err : `Write file CHANGELOG.md`)
)
}
compile()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment