Add releases section to docs (#3564)
Add a section to our docs site explaining how tldraw is versioned and adding a changelog pulled from github. ### Change Type - [x] `docs` — Changes to the documentation, examples, or templates. - [x] `feature` — New feature
This commit is contained in:
parent
b56c4dd225
commit
8f58e7392c
29 changed files with 101492 additions and 104964 deletions
|
@ -1,3 +1,4 @@
|
|||
import { assert } from '@/utils/assert'
|
||||
import fs from 'fs'
|
||||
import { Octokit } from 'octokit'
|
||||
import path from 'path'
|
||||
|
@ -6,6 +7,9 @@ const octokit = new Octokit({})
|
|||
|
||||
const { log: nicelog } = console
|
||||
|
||||
const CHANGELOG_START_TAG = '{/* START AUTO-GENERATED CHANGELOG */}'
|
||||
const CHANGELOG_END_TAG = '{/* END AUTO-GENERATED CHANGELOG */}'
|
||||
|
||||
export async function fetchReleases() {
|
||||
try {
|
||||
const RELEASES_DIRECTORY = path.join(process.cwd(), 'content', 'releases')
|
||||
|
@ -19,12 +23,23 @@ export async function fetchReleases() {
|
|||
const res = await octokit.rest.repos.listReleases({
|
||||
owner: 'tldraw',
|
||||
repo: 'tldraw',
|
||||
per_page: 100,
|
||||
})
|
||||
|
||||
const changelogIndex: { tagName: string; body: string }[] = []
|
||||
|
||||
if (res.status === 200) {
|
||||
nicelog(`• Writing releases...`)
|
||||
res.data
|
||||
.filter((release) => !release.draft && release.tag_name.startsWith('v2.0.0'))
|
||||
.filter(
|
||||
(release) =>
|
||||
// no drafts
|
||||
!release.draft &&
|
||||
// no v1 releases
|
||||
!release.tag_name.startsWith('v1') &&
|
||||
// no pre-releases
|
||||
!release.tag_name.includes('-')
|
||||
)
|
||||
.forEach((release, i) => {
|
||||
const date = (
|
||||
release.published_at ? new Date(release.published_at) : new Date()
|
||||
|
@ -57,9 +72,53 @@ export async function fetchReleases() {
|
|||
|
||||
m += body
|
||||
|
||||
changelogIndex.push({
|
||||
tagName: release.tag_name,
|
||||
body,
|
||||
})
|
||||
|
||||
const filePath = path.join(RELEASES_DIRECTORY, `${release.tag_name}.mdx`)
|
||||
fs.writeFileSync(filePath, m)
|
||||
})
|
||||
nicelog(`• Writing changelog...`)
|
||||
|
||||
const releasesPagePath = path.join(
|
||||
process.cwd(),
|
||||
'content',
|
||||
'getting-started',
|
||||
'releases-versioning.mdx'
|
||||
)
|
||||
const releasesPageContent = fs.readFileSync(releasesPagePath, 'utf-8')
|
||||
|
||||
const startIndex = releasesPageContent.indexOf(CHANGELOG_START_TAG)
|
||||
assert(startIndex !== -1, 'cannot find start tag')
|
||||
|
||||
const endIndex = releasesPageContent.indexOf(CHANGELOG_END_TAG)
|
||||
assert(endIndex !== -1, 'cannot find end tag')
|
||||
|
||||
const contentBefore = releasesPageContent.slice(0, startIndex)
|
||||
const contentAfter = releasesPageContent.slice(endIndex + CHANGELOG_END_TAG.length)
|
||||
|
||||
const changelogIndexMarkdown = changelogIndex
|
||||
.sort((a, b) => b.tagName.localeCompare(a.tagName))
|
||||
.map(({ body, tagName }, i) => {
|
||||
if (i >= 10) {
|
||||
return `### [${tagName}](/releases/${tagName})`
|
||||
} else {
|
||||
return [`### [${tagName}](/releases/${tagName})`, body].join('\n\n')
|
||||
}
|
||||
})
|
||||
.join('\n\n')
|
||||
|
||||
const updatedContent = [
|
||||
contentBefore,
|
||||
CHANGELOG_START_TAG,
|
||||
changelogIndexMarkdown,
|
||||
CHANGELOG_END_TAG,
|
||||
contentAfter,
|
||||
].join('\n\n')
|
||||
|
||||
fs.writeFileSync(releasesPagePath, updatedContent, 'utf-8')
|
||||
} else {
|
||||
throw Error(`x Could not get releases for tldraw.`)
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue