{{- $currentVersion := .Page.Param "version" -}}
{{- $versionParts := split (replaceRE "^v" "" $currentVersion) "." -}}
{{- $majorVersion := index $versionParts 0 -}}
{{- $currentMinorVersion := int (index $versionParts 1) -}}
{{- $currentPatchVersion := int (index $versionParts 2) -}}
{{- $previousMinorVersion := sub $currentMinorVersion 1 -}}
{{- $exampleSourceVersion := printf "v%s.%d.1" $majorVersion (sub $currentMinorVersion 2) -}}
{{- $releaseURLPrefix := "https://github.com/kubernetes-sigs/kueue/releases/tag/" -}}
{{/* Find the latest stable patch in the previous minor line. */}}
{{- $previousMinorTagsURL := printf "https://api.github.com/repos/kubernetes-sigs/kueue/git/matching-refs/tags/v%s.%d." $majorVersion $previousMinorVersion -}}
{{- $previousMinorTagsResource := resources.GetRemote $previousMinorTagsURL -}}
{{- $previousMinorTags := $previousMinorTagsResource | transform.Unmarshal -}}
{{- $stablePreviousMinorPattern := printf "^v%s\\.%d\\.[0-9]+$" $majorVersion $previousMinorVersion -}}
{{- $previousMinorLatestPatch := 0 -}}
{{- range $previousMinorTags -}}
{{- $tagName := replace .ref "refs/tags/" "" -}}
{{- if findRE $stablePreviousMinorPattern $tagName -}}
{{- $tagParts := split (replaceRE "^v" "" $tagName) "." -}}
{{- $patchVersion := int (index $tagParts 2) -}}
{{- if gt $patchVersion $previousMinorLatestPatch -}}
{{- $previousMinorLatestPatch = $patchVersion -}}
{{- end -}}
{{- end -}}
{{- end -}}
{{- $previousMinorTargetVersion := printf "v%s.%d.%d" $majorVersion $previousMinorVersion $previousMinorLatestPatch -}}
{{/* Example 1: upgrade to the latest release, crossing each new minor line. */}}
{{- $latestReleaseNotes := slice -}}
{{- range seq (add (sub $currentMinorVersion 2) 1) $currentMinorVersion -}}
{{- $latestReleaseNotes = $latestReleaseNotes | append (printf "v%s.%d.0" $majorVersion .) -}}
{{- end -}}
{{- if gt $currentPatchVersion 0 -}}
{{- range seq 1 $currentPatchVersion -}}
{{- $latestReleaseNotes = $latestReleaseNotes | append (printf "v%s.%d.%d" $majorVersion $currentMinorVersion .) -}}
{{- end -}}
{{- end -}}
{{/* Example 2: upgrade to the latest patch in the previous minor line. */}}
{{- $previousMinorReleaseNotes := slice -}}
{{- range seq 0 $previousMinorLatestPatch -}}
{{- $previousMinorReleaseNotes = $previousMinorReleaseNotes | append (printf "v%s.%d.%d" $majorVersion $previousMinorVersion .) -}}
{{- end -}}
{{- $latestReleaseNoteLinks := slice -}}
{{- range $latestReleaseNotes -}}
{{- $latestReleaseNoteLinks = $latestReleaseNoteLinks | append (printf "%s" $releaseURLPrefix . .) -}}
{{- end -}}
{{- $previousMinorReleaseNoteLinks := slice -}}
{{- range $previousMinorReleaseNotes -}}
{{- $previousMinorReleaseNoteLinks = $previousMinorReleaseNoteLinks | append (printf "%s" $releaseURLPrefix . .) -}}
{{- end -}}
{{- if eq .Page.Lang "zh-cn" -}}
{{- $latestReleaseNoteList := delimit $latestReleaseNoteLinks "、" " 和 " | safeHTML -}}
{{- $previousMinorReleaseNoteList := delimit $previousMinorReleaseNoteLinks "、" " 和 " | safeHTML -}}
例如:
从 {{ $exampleSourceVersion }} 升级到 {{ $currentVersion }} 时,请查看 {{ $latestReleaseNoteList }} 的升级说明。
从 {{ $exampleSourceVersion }} 升级到 {{ $previousMinorTargetVersion }} 时,请查看 {{ $previousMinorReleaseNoteList }} 的升级说明。
For example:
When upgrading from {{ $exampleSourceVersion }} to {{ $currentVersion }}, review the upgrade notes for {{ $latestReleaseNoteList }}.
When upgrading from {{ $exampleSourceVersion }} to {{ $previousMinorTargetVersion }}, review the upgrade notes for {{ $previousMinorReleaseNoteList }}.