Generate changelog release info with Hugo rather than when generating changelog (#2033)

This commit is contained in:
Kévin Commaille 2024-12-23 18:46:52 +01:00 committed by GitHub
parent baa60bf728
commit 6f1e64cb12
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
22 changed files with 127 additions and 246 deletions

View file

@ -1,4 +0,0 @@
{{ .RawContent
| replaceRE "\n- " "\n- [ ] "
| replaceRE "<!--(.|\\s)*?-->\n?" ""
| replaceRE "<tr><th>Checklist.*\n" "" }}

View file

@ -0,0 +1,34 @@
{{- /*
Template to render a page with a `changelog` layout as a markdown checklist.
This transforms the markdown source of the changelog to change list items,
which in turn are them transformed into a rendered checklist.
Stable releases will additionally have a table at the top of the page with
information about the release, including:
* A link to the matrix-spec repository at the time of the release, with the
version taken from the `linkTitle` in the frontmatter of the page.
* The date of the release, taken from the `date` in the frontmatter of the
page.
*/ -}}
{{ $version := lower .LinkTitle -}}
# Matrix Specification {{ .Title }}
{{ if ne $version "unstable" -}}
{{- /*
Most markdown parsers require the header to recognize a markdown table,
so add an empty header.
*/ -}}
| | |
|---|---|
| Git commit | {{ printf "https://github.com/matrix-org/matrix-spec/tree/%s" $version }} |
| Release date | {{ .Date | time.Format ":date_long" }} |
{{ end -}}
{{ .RawContent | replaceRE "\n- " "\n- [ ] " }}

View file

@ -0,0 +1,46 @@
{{- /*
Template to render a page with a `changelog` layout or the `changelog`
section page. This conflation seems to be a limitation of Hugo currently, it
uses this template for both cases.
For the `changelog` section page, this redirects the page to the latest
version's changelog page.
For a page with a `changelog` layout, this adds a table at the top of the
page with information about the release:
* A link to the matrix-spec repository at the time of the release, with the
version taken from the `linkTitle` in the frontmatter of the page, unless
it is the unstable changelog.
* The date of the release, taken from the `date` in the frontmatter of the
page, unless it is the unstable changelog.
* A link to the markdown checklist format of the changelog. The `outputs` in
the frontmatter of the page must include `checklist`.
*/ -}}
{{ define "main" }}
{{ if .IsSection -}}
{{ with index .RegularPages.ByDate.Reverse 0 -}}
<meta http-equiv="refresh" content="0; url={{ .RelPermalink }}">
{{ end -}}
{{ else -}}
{{ $version := lower .LinkTitle -}}
<div class="td-content">
<h1>{{ .Title }}</h1>
<table class="release-info">
{{ if ne $version "unstable" -}}
{{ $commitLink := printf "https://github.com/matrix-org/matrix-spec/tree/%s" $version -}}
<tr><th>Git commit</th><td><a href="{{ $commitLink }}">{{ $commitLink }}</a></td>
<tr><th>Release date</th><td>{{ .Date | time.Format ":date_long" }}</td>
{{ end -}}
{{ $checklist := .OutputFormats.Get "checklist" -}}
<tr><th>Checklist</th><td><a href="{{ $checklist.RelPermalink }}">checklist.md</a></td>
</table>
{{ .Content }}
</div>
{{ end -}}
{{ end }}

View file

@ -1,8 +0,0 @@
{{/*
This template is used to redirect the changelog section under
"content/changelogs" to the latest version's changelog page.
*/}}
{{ with index .Page.RegularPages.ByDate.Reverse 0 }}
<meta http-equiv="refresh" content="0; url={{ .RelPermalink }}">
{{ end }}