Skip to content

Commit 9dbe03f

Browse files
Merge pull request #825 from TineoC/fix/kep-see-also-related-enhancements
fix: link see-also KEP references to their pages on this site
2 parents 9db7322 + 357c13e commit 9dbe03f

4 files changed

Lines changed: 75 additions & 23 deletions

File tree

layouts/keps/single.html

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -81,15 +81,7 @@ <h1>KEP-{{ .Params.kepNumber }}: {{ .Title }}</h1>
8181
<div class="kep-banner-sublabel">Related Enhancements</div>
8282
<ul class="kep-link-list">
8383
{{ range . }}
84-
<li>
85-
{{- if and (strings.HasPrefix . "http") (not (strings.Contains . "[")) -}}
86-
<a href="{{ . }}" target="_blank" rel="noopener"><i class="fas fa-external-link-alt"></i> {{ . }}</a>
87-
{{- else if and (strings.HasPrefix . "/") (not (strings.Contains . "[")) -}}
88-
<a href="https://github.com/kubernetes/enhancements/tree/master{{ . }}" target="_blank" rel="noopener"><i class="fab fa-github"></i> {{ . }}</a>
89-
{{- else -}}
90-
{{ . | markdownify }}
91-
{{- end -}}
92-
</li>
84+
<li>{{- partial "keps/see-also.html" . -}}</li>
9385
{{ end }}
9486
</ul>
9587
</div>
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
{{- /* Returns this site's page for a KEP number, or "" when that KEP has no page.
2+
Not every KEP gets one — see content/en/resources/keps/_content.gotmpl for the
3+
stage/status filter. Keeps the /resources/keps/<number>/ URL scheme in one place.
4+
5+
@param {string} context The KEP number, e.g. "4569".
6+
@returns {page.Page|string} The page, or "" when there is none — falsy either way,
7+
so callers can reach for `with`.
8+
*/ -}}
9+
{{- $page := "" -}}
10+
{{- /* An empty number would make GetPage return the section page listing every KEP. */ -}}
11+
{{- with printf "%v" . -}}
12+
{{- $page = site.GetPage (printf "resources/keps/%s" .) -}}
13+
{{- end -}}
14+
{{- return $page -}}
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
{{- /* Renders one KEP `seeAlso` entry as a link. Shapes present in keps.json:
2+
- markdown link: "[Title](https://…)"
3+
- full URL: "https://…"
4+
- root-relative path: "/keps/sig-scheduling/624-scheduling-framework"
5+
- bare repo path: "keps/sig-node/4569-cgroup-v1-maintenance-mode/README.md"
6+
- nested path: "/keps/prod-readiness/sig-apps/3329"
7+
- singular "/kep/": "/kep/sig-network/0752-endpointslices/"
8+
- free text: "KEP-32", "TBD", "n/a"
9+
10+
Every path shape resolves to the referenced KEP's own page on this site, so every
11+
entry reads the same way regardless of how it was written. Paths we can't resolve
12+
fall back to GitHub, and anything else is left as text.
13+
14+
@param {string} context One seeAlso entry.
15+
*/ -}}
16+
{{- $entry := . -}}
17+
{{- if strings.Contains $entry "[" -}}
18+
{{ $entry | markdownify }}
19+
{{- else if strings.HasPrefix $entry "http" -}}
20+
<a href="{{ $entry }}" target="_blank" rel="noopener"><i class="fas fa-external-link-alt" aria-hidden="true"></i> {{ $entry }}</a>
21+
{{- else -}}
22+
{{- $path := printf "/%s" (strings.TrimPrefix "/" $entry) -}}
23+
{{- /* A few entries write "/kep/…" for "/keps/…"; normalizing here fixes both the
24+
lookup below and the directory name the GitHub fallback links to. */ -}}
25+
{{- $path = replaceRE `^/kep/` "/keps/" $path -}}
26+
{{- $kep := "" -}}
27+
{{- /* The SIG is usually the only directory before the number, but some entries nest
28+
further ("/keps/prod-readiness/sig-apps/3329", kubeadm's own subdirectory). */ -}}
29+
{{- with findRESubmatch `^/keps/(?:[^/]+/)*([0-9]+)([^/]*)` $path 1 -}}
30+
{{- $number := index . 0 1 -}}
31+
{{- $directory := printf "%s%s" $number (index . 0 2) -}}
32+
{{- $lookup := strings.TrimLeft "0" $number -}}
33+
{{- with partialCached "keps/page-by-number.html" $lookup $lookup -}}
34+
{{- /* A zero-padded number is legacy per-directory numbering ("0006-apply.md",
35+
kubeadm's "0023-kubeadm-config.md") that only coincidentally matches a
36+
modern KEP number, so require an exact directory match before trusting it.
37+
Unpadded numbers are global KEP numbers and stay correct even when the
38+
KEP's directory has since been renamed. */ -}}
39+
{{- if or (not (strings.HasPrefix $number "0")) (eq .Params.name $directory) -}}
40+
{{- $kep = . -}}
41+
{{- end -}}
42+
{{- end -}}
43+
{{- end -}}
44+
{{- if $kep -}}
45+
<a href="{{ $kep.RelPermalink }}"><i class="fas fa-link" aria-hidden="true"></i> KEP-{{ $kep.Params.kepNumber }}: {{ $kep.Title }}</a>
46+
{{- else if strings.Contains $path "/keps/" -}}
47+
<a href="https://github.com/kubernetes/enhancements/tree/master{{ $path }}" target="_blank" rel="noopener"><i class="fab fa-github" aria-hidden="true"></i> {{ $entry }}</a>
48+
{{- else -}}
49+
{{ $entry | markdownify }}
50+
{{- end -}}
51+
{{- end -}}

layouts/shortcodes/keps-data.html

Lines changed: 9 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@
1919
{{- end -}}
2020

2121
{{- $validStages := slice "alpha" "beta" "stable" "deprecated" -}}
22-
{{- $validStatuses := slice "implementable" "implemented" -}}
2322

2423
{{- /* Build unique release and SIG lists */ -}}
2524
{{- $releaseSet := dict -}}
@@ -114,9 +113,13 @@
114113
</thead>
115114
<tbody>
116115
{{ range $data := $kepData }}
117-
{{- $hasValidStage := and $data.stage (in $validStages $data.stage) -}}
118-
{{- $hasValidStatus := and $data.status (in $validStatuses $data.status) -}}
119-
{{- $hasPage := or $hasValidStage $hasValidStatus -}}
116+
{{- /* Link to the KEP's own page on this site, falling back to the enhancements
117+
repo for the KEPs that have no page. Cached because this table lists every
118+
KEP and most of them repeat the same lookup. */ -}}
119+
{{- $kepUrl := printf "https://features.k8s.io/%s" $data.kepNumber -}}
120+
{{- with partialCached "keps/page-by-number.html" $data.kepNumber $data.kepNumber -}}
121+
{{- $kepUrl = .RelPermalink -}}
122+
{{- end -}}
120123
{{- $stage := $data.stage -}}
121124
{{- if not $stage }}
122125
{{- if or (eq $data.status "implementable") (eq $data.status "implemented") }}
@@ -144,18 +147,10 @@
144147
{{- $allAuthors = strings.TrimLeft $allAuthors " " -}}
145148
<tr data-stage="{{ $stage }}" data-latest-milestone="{{ if $latest }}{{ strings.TrimPrefix "v" $latest }}{{ end }}" data-sig="{{ $data.owningSig }}" data-kep="{{ $data.kepNumber }}" data-created="{{ $data.creationDate }}" data-authors="{{ $allAuthors }}">
146149
<td class="kep-col-number" data-order="{{ $data.kepNumber }}">
147-
{{- if $hasPage }}
148-
<a href="/resources/keps/{{ $data.kepNumber }}/" class="kep-number-link">{{ $data.kepNumber }}</a>
149-
{{- else }}
150-
<a href="https://features.k8s.io/{{ $data.kepNumber }}" class="kep-number-link">{{ $data.kepNumber }}</a>
151-
{{- end }}
150+
<a href="{{ $kepUrl }}" class="kep-number-link">{{ $data.kepNumber }}</a>
152151
</td>
153152
<td class="kep-col-title">
154-
{{- if $hasPage }}
155-
<a href="/resources/keps/{{ $data.kepNumber }}/" class="kep-title-link">{{ $data.title }}</a>
156-
{{- else }}
157-
<a href="https://features.k8s.io/{{ $data.kepNumber }}" class="kep-title-link">{{ $data.title }}</a>
158-
{{- end }}
153+
<a href="{{ $kepUrl }}" class="kep-title-link">{{ $data.title }}</a>
159154
</td>
160155
<td class="kep-col-sig">
161156
{{- $sigSlug := strings.TrimPrefix "sig-" $data.owningSig -}}

0 commit comments

Comments
 (0)