Skip to content

Commit

Permalink
Set age for cached remote resources (#4202)
Browse files Browse the repository at this point in the history
* Set age for cached remote resources

Signed-off-by: Ian Maddaus <[email protected]>

* DRY

Signed-off-by: Ian Maddaus <[email protected]>

* Update how key is generated

Signed-off-by: Ian Maddaus <[email protected]>

---------

Signed-off-by: Ian Maddaus <[email protected]>
  • Loading branch information
IanMadd authored Nov 13, 2023
1 parent 09c744d commit 379a778
Show file tree
Hide file tree
Showing 4 changed files with 96 additions and 84 deletions.
21 changes: 21 additions & 0 deletions config.toml
Original file line number Diff line number Diff line change
Expand Up @@ -60,3 +60,24 @@ notAlternative = true
endLevel = 4
ordered = false
startLevel = 2

[caches]
[caches.assets]
dir = ':resourceDir/_gen'
maxAge = -1
[caches.getcsv]
dir = ':cacheDir/:project'
maxAge = -1
[caches.getjson]
dir = ':cacheDir/:project'
maxAge = "1h"
[caches.getresource]
dir = ':cacheDir/:project'
maxAge = "1h"
[caches.images]
dir = ':resourceDir/_gen'
maxAge = -1
[caches.modules]
dir = ':cacheDir/modules'
maxAge = -1

53 changes: 9 additions & 44 deletions themes/docs-new/layouts/_default/release_notes.html
Original file line number Diff line number Diff line change
Expand Up @@ -11,50 +11,10 @@
{{ if or (hugo.IsProduction) ( eq hugo.Environment "staging") ( eq hugo.Environment "branch-deploy")}}
{{ with $product := $.Param "release_notes" }}

{{ $partialData := dict "product" $product "chefVersions" $.Site.Data.releases.chef.current }}
{{ $versionsCorrectOrder := partial "version_numbers.html" $partialData }}

{{- $versionsUrl := "" -}}
{{- if eq $product "automate" -}}
{{- $versionsUrl = "https://packages.chef.io/releases/current/automate.json"}}
{{- else if (eq $product "habitat") -}}
{{- $versionsUrl = "assets/release-notes/habitat/release-versions.json" -}}
{{- else if (hasPrefix $product "inspec-") -}}
{{- $versionsUrl = print "_vendor/github.com/inspec/" $product "/docs-chef-io/assets/release-notes/" $product "/release-dates.json" -}}
{{- else -}}
{{- $versionsUrl = (print "https://omnitruck.chef.io/stable/" $product "/versions/all") -}}
{{- end -}}

{{- $versions := getJSON $versionsUrl -}}

{{/* We have a "current" version of Infra Client that they want release notes for on the Client release notes page. */}}
{{/* This allows us to add current release version numbers of Client to the list of version numbers */}}
{{/* that we want to include in the Client release notes. */}}
{{- if eq $product "chef" -}}
{{- $current_versions := $.Site.Data.releases.chef.current -}}
{{- $versions = append $current_versions $versions -}}
{{- $paddedVersions := apply $versions "partial" "zero_prefix_pad" "." }}
{{- $sortedVersions := (sort $paddedVersions "value" "desc") }}
{{- $versions = apply $sortedVersions "partial" "zero_prefix_trim" "." }}
{{- end -}}

{{- $versionsCorrectOrder := slice -}}

{{- if eq $product "automate" -}}
{{- $len := len $versions -}}
{{- range seq $len -}}
{{- $versionsCorrectOrder = $versionsCorrectOrder | append (index $versions (sub $len .)) -}}
{{- end -}}
{{- else if eq $product "chef" -}}
{{- $versionsCorrectOrder = $versions -}}
{{ else }}
{{ $len := len $versions }}
{{- range seq $len -}}
{{- $versionsCorrectOrder = $versionsCorrectOrder | append (index $versions (sub $len .)) }}
{{ end }}
{{- end -}}



{{- range $versionsCorrectOrder}}
{{- range $versionsCorrectOrder }}

{{- $version := "" -}}

Expand Down Expand Up @@ -102,7 +62,12 @@ <h2 id="{{ $version }}">{{ $fullName }} {{ $version }}</h2>
<p><i>Released on {{ time.Format "January 2, 2006" .release_date }}</i></p>
{{- end -}}

{{- $remoteResponse := resources.GetRemote $mdUrl (dict "headers" (dict "Cache-Control" "no-cache" "Connection" "keep-alive")) -}}
{{/* Define GetRemote options */}}
{{ $headers := dict "Cache-Control" "no-cache" "Connection" "keep-alive" }}
{{ $cacheKey := print $mdUrl (now.Format "20060102") (div now.Hour 6) | md5 }}
{{ $opts := dict "headers" $headers "key" $cacheKey }}

{{- $remoteResponse := resources.GetRemote $mdUrl $opts -}}

{{- if eq $remoteResponse nil -}}
<p>This release does not have any release notes.</p>
Expand Down
42 changes: 2 additions & 40 deletions themes/docs-new/layouts/partials/release_notes_toc.html
Original file line number Diff line number Diff line change
Expand Up @@ -10,46 +10,8 @@

{{ with $product := $.Param "release_notes" }}

{{ $versionsUrl := ""}}
{{ if eq $product "automate" }}
{{ $versionsUrl = "https://packages.chef.io/releases/current/automate.json"}}
{{ else if (eq $product "habitat") }}
{{ $versionsUrl = "assets/release-notes/habitat/release-versions.json" }}
{{ else if (hasPrefix $product "inspec-") }}
{{ $versionsUrl = print "_vendor/github.com/inspec/" $product "/docs-chef-io/assets/release-notes/" $product "/release-dates.json" }}
{{ else }}
{{ $versionsUrl = (print "https://omnitruck.chef.io/stable/" $product "/versions/all") }}
{{ end }}

{{ $versions := getJSON $versionsUrl }}

{{/* We have a current version of Infra Client that they want release notes for on the Client release notes page. */}}
{{/* This allows us to add current release version numbers of Client to the list of version numbers */}}
{{/* that we want to include in the Client release notes. */}}
{{- $current_versions := slice -}}
{{- if eq $product "chef" -}}
{{- $current_versions := $.Site.Data.releases.chef.current -}}
{{- $versions = append $current_versions $versions -}}
{{- $paddedVersions := apply $versions "partial" "zero_prefix_pad" "." }}
{{- $sortedVersions := (sort $paddedVersions "value" "desc") }}
{{- $versions = apply $sortedVersions "partial" "zero_prefix_trim" "." }}
{{- end -}}

{{- $versionsCorrectOrder := slice -}}

{{- if eq $product "automate" -}}
{{- $len := len $versions -}}
{{- range seq $len -}}
{{- $versionsCorrectOrder = $versionsCorrectOrder | append (index $versions (sub $len .)) -}}
{{- end -}}
{{- else if eq $product "chef" -}}
{{- $versionsCorrectOrder = $versions -}}
{{ else }}
{{ $len := len $versions }}
{{- range seq $len -}}
{{- $versionsCorrectOrder = $versionsCorrectOrder | append (index $versions (sub $len .)) }}
{{ end }}
{{- end -}}
{{ $partialData := dict "product" $product "chefVersions" $.Site.Data.releases.chef.current }}
{{ $versionsCorrectOrder := partial "version_numbers.html" $partialData }}

{{ $lastDate := ""}}
{{ if eq $product "automate" }}
Expand Down
64 changes: 64 additions & 0 deletions themes/docs-new/layouts/partials/version_numbers.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
{{ $product := .product }}
{{ $chefVersions := .chefVersions }}

{{ $versionsUrl := ""}}
{{ if eq $product "automate" }}
{{ $versionsUrl = "https://packages.chef.io/releases/current/automate.json"}}
{{ else if (eq $product "habitat") }}
{{ $versionsUrl = "assets/release-notes/habitat/release-versions.json" }}
{{ else if (hasPrefix $product "inspec-") }}
{{ $versionsUrl = print "_vendor/github.com/inspec/" $product "/docs-chef-io/assets/release-notes/" $product "/release-dates.json" }}
{{ else }}
{{ $versionsUrl = (print "https://omnitruck.chef.io/stable/" $product "/versions/all") }}
{{ end }}

{{ $versions := "" }}

{{ $headers := dict "Cache-Control" "no-cache" "Connection" "keep-alive" }}
{{ $cacheKey := print $versionsUrl (now.Format "20060102") (now.Hour) | md5 }}
{{ $opts := dict "headers" $headers "key" $cacheKey }}

{{- if hasPrefix $versionsUrl "https://" -}}
{{- with resources.GetRemote $versionsUrl $opts -}}
{{ with .Err }}
{{ errorf "%s" . }}
{{ else }}
{{ $unmarshalOpts := dict "delimiter" "," }}
{{ $versions = . | transform.Unmarshal $unmarshalOpts }}
{{ end }}
{{ else }}
{{ errorf "Unable to get remote resource %q" $versionsUrl }}
{{ end }}
{{ else }}
{{ $versions = getJSON $versionsUrl }}
{{ end }}


{{/* We have a current version of Infra Client that they want release notes for on the Client release notes page. */}}
{{/* This allows us to add current release version numbers of Client to the list of version numbers */}}
{{/* that we want to include in the Client release notes. */}}
{{- $current_versions := slice -}}
{{- if eq $product "chef" -}}
{{- $versions = append $chefVersions $versions -}}
{{- $paddedVersions := apply $versions "partial" "zero_prefix_pad" "." }}
{{- $sortedVersions := (sort $paddedVersions "value" "desc") }}
{{- $versions = apply $sortedVersions "partial" "zero_prefix_trim" "." }}
{{- end -}}

{{- $versionsCorrectOrder := slice -}}

{{- if eq $product "automate" -}}
{{- $len := len $versions -}}
{{- range seq $len -}}
{{- $versionsCorrectOrder = $versionsCorrectOrder | append (index $versions (sub $len .)) -}}
{{- end -}}
{{- else if eq $product "chef" -}}
{{- $versionsCorrectOrder = $versions -}}
{{ else }}
{{ $len := len $versions }}
{{- range seq $len -}}
{{- $versionsCorrectOrder = $versionsCorrectOrder | append (index $versions (sub $len .)) }}
{{ end }}
{{- end -}}

{{ return $versionsCorrectOrder }}

0 comments on commit 379a778

Please sign in to comment.