Skip to content

Commit 14b9f53

Browse files
committed
Replace prerelease-link-subdomain with version-aware shortcode
The `prerelease-link-subdomain` variable is phase-aware but not version-aware — on the next RC cycle, old blog posts would incorrectly point to prerelease.quarto.org even though those docs already moved to quarto.org. Add a `prerelease-docs-url` shortcode extension that compares a version argument against the `version` key in `_quarto.yml` to decide whether docs live on quarto.org or prerelease.quarto.org. On the prerelease site (prerelease-docs profile), it always returns "prerelease." regardless of version. Follow-up to #1932, relates to #1934.
1 parent 3bc2286 commit 14b9f53

6 files changed

Lines changed: 51 additions & 14 deletions

File tree

README.md

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -132,24 +132,25 @@ The group order determines which phase is active on **quarto.org** (the main sit
132132
|---|---|
133133
| `_quarto-prerelease-docs.yml` | Site-specific configuration for prerelease.quarto.org |
134134

135-
### Subdomain variables
135+
### Subdomain variable and shortcode
136136

137-
Two variables control how links resolve across builds. Both use the same pattern — `https://{{< meta VAR >}}quarto.org/...` — but serve different purposes:
137+
**`prerelease-subdomain`** — site identity variable ("am I the prerelease site?"). Default `''` in `_quarto.yml`, set to `prerelease.` in `_quarto-prerelease-docs.yml`. Use for self-referential links (e.g. RevealJS demo links back to its own site).
138138

139-
| Variable | Purpose | Default | Set by `rc` | Set by `prerelease-docs` |
140-
|---|---|---|---|---|
141-
| `prerelease-subdomain` | **Site identity** — "am I the prerelease site?" | `''` | — | `prerelease.` |
142-
| `prerelease-link-subdomain` | **Content linking** — "where do prerelease docs live right now?" | `''` | `prerelease.` | `prerelease.` |
139+
**`prerelease-docs-url`** — version-aware shortcode for content linking. Use in blog posts that reference docs only available on prerelease:
143140

144-
Use `prerelease-subdomain` for self-referential links (e.g. RevealJS demo links back to its own site). Use `prerelease-link-subdomain` for content on `main` that references docs only available on prerelease during RC phase (e.g. blog posts announcing upcoming features).
141+
```markdown
142+
[PDF Accessibility](https://{{< prerelease-docs-url 1.9 >}}quarto.org/docs/output-formats/pdf-accessibility.html)
143+
```
144+
145+
The shortcode compares its version argument to the `version` key in `_quarto.yml` (which tracks the current stable release on `main`). If they match, docs are on quarto.org (`""`); if not, they're still on prerelease.quarto.org (`"prerelease."`). On the prerelease site (`prerelease-docs` profile), it always returns `"prerelease."`.
145146

146147
### Release lifecycle
147148

148149
1. **Development phase:** group is `[prerelease, rc]` — main site shows "Pre-release"
149150
2. **RC phase:** flip group to `[rc, prerelease]` — main site shows "Release Candidate"
150151
3. **Release:** flip back to `[prerelease, rc]` for the next development cycle
151152

152-
These flips only affect quarto.org. The prerelease site CI explicitly activates `prerelease,prerelease-docs`, so it always shows "Pre-release" regardless of group order.
153+
These flips only affect quarto.org. The prerelease site CI activates `prerelease-docs`, and the group order determines the phase branding on the prerelease site too.
153154

154155
### Local preview
155156

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
title: Prerelease Docs URL
2+
author: Quarto
3+
version: 0.0.1
4+
contributes:
5+
shortcodes:
6+
- prerelease-docs-url.lua
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
-- Version-aware shortcode for linking to prerelease docs.
2+
--
3+
-- Usage: {{< prerelease-docs-url 1.9 >}}
4+
--
5+
-- Returns "prerelease." when the referenced version's docs live on
6+
-- prerelease.quarto.org, or "" when they're on quarto.org.
7+
8+
local function handler(args, kwargs, meta)
9+
local ref_version = quarto.shortcode.read_arg(args, 1)
10+
if ref_version == nil then
11+
quarto.log.error("prerelease-docs-url requires a version argument, e.g. {{< prerelease-docs-url \"1.9\" >}}")
12+
return pandoc.Str("")
13+
end
14+
-- Strip surrounding quotes that may be preserved in text contexts
15+
ref_version = ref_version:gsub('^"(.*)"$', '%1'):gsub("^'(.*)'$", '%1')
16+
17+
-- On the prerelease site, always link to prerelease
18+
if quarto.project.profile:includes("prerelease-docs") then
19+
return pandoc.Str("prerelease.")
20+
end
21+
22+
-- Compare referenced version to this branch's version
23+
local branch_version = pandoc.utils.stringify(meta["version"])
24+
25+
if ref_version == branch_version then
26+
return pandoc.Str("")
27+
else
28+
return pandoc.Str("prerelease.")
29+
end
30+
end
31+
32+
return {["prerelease-docs-url"] = handler}

_quarto-prerelease-docs.yml

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
11
# Pre-release version number
2-
version: v1.9
2+
version: '1.9'
33

44
prerelease-subdomain: prerelease.
5-
prerelease-link-subdomain: prerelease.
65

76
website:
87
title: "Quarto (Pre-release)"
@@ -11,7 +10,7 @@ website:
1110
repo-branch: prerelease
1211
announcement:
1312
dismissable: false
14-
content: "Pre-release ({{< meta version >}}) Documentation: [Download {{< meta version >}}](/docs/download/prerelease.qmd), [Current Release Docs](http://quarto.org) "
13+
content: "Pre-release (v{{< meta version >}}) Documentation: [Download v{{< meta version >}}](/docs/download/prerelease.qmd), [Current Release Docs](http://quarto.org) "
1514
navbar:
1615
pinned: true
1716
search:

_quarto-rc.yml

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
11
prerelease-title: Release Candidate
22
prerelease-lower: release candidate
3-
prerelease-mode: Release Candidate
4-
prerelease-link-subdomain: prerelease.
3+
prerelease-mode: Release Candidate

_quarto.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -706,8 +706,8 @@ filters:
706706
- at: post-quarto
707707
path: filters/include-dark.lua
708708

709+
version: '1.8'
709710
prerelease-subdomain: ''
710-
prerelease-link-subdomain: ''
711711

712712
freeze: true
713713

0 commit comments

Comments
 (0)