Skip to content
Merged
Show file tree
Hide file tree
Changes from 3 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
37 changes: 37 additions & 0 deletions docs/book/functions/handle-version.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
function notFound(info) {
return {
statusCode: 404,
headers: {'content-type': 'text/html'},
body: ("<h1>Not Found</h1>"+
"<p>You shouldn't see this page, please file a bug</p>"+
`<details><summary>debug details</summary><pre><code>${JSON.stringify(info)}</code></pre></details>`
),
};
}

function redirectToDownload(version, file) {
const loc = `https://github.com/kubernetes-sigs/kubebuilder/releases/download/v${version}/${file}`;
return {
statusCode: 302,
headers: {'location': loc, 'content-type': 'text/plain'},
body: `Redirecting to ${loc}`,
};
}


exports.handler = async function(evt, ctx) {
// grab the prefix too to check for coherence
const [prefix, version, os, arch] = evt.path.split("/").slice(-4);
if (prefix !== 'releases' || !version || !os || !arch) {
return notFound({version: version, os: os, arch: arch, prefix: prefix, rawPath: evt.path});
}

switch(version[0]) {
case '1':
// fallthrough
case '2':
return redirectToDownload(version, `kubebuilder_${version}_${os}_${arch}.tar.gz`);
default:
return redirectToDownload(version, `kubebuilder_${os}_${arch}`);
}
}
34 changes: 17 additions & 17 deletions netlify.toml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,16 @@
base = "docs/book"
command = "./install-and-build.sh"
publish = "docs/book/book"
functions = "docs/book/functions"

# TODO(directxman12): I don't know why, but this (functions) stanza is in the
# docs and local `netlify dev`, but the above one (under build) is used by the
# online version :-/

# used to handle the split between v2 and v3+ download links
[functions]
# relative to base directory
directory = "functions"

# Standard Netlify redirects
[[redirects]]
Expand Down Expand Up @@ -63,21 +72,7 @@
status = 302
force = true

# v1 redirects.
[[redirects]]
from = "https://go.kubebuilder.io/releases/1.:minorpatch/:os/:arch"
to = "https://github.com/kubernetes-sigs/kubebuilder/releases/download/v1.:minorpatch/kubebuilder_1.:minorpatch_:os_:arch.tar.gz"
status = 302
force = true

# v2 redirects.
[[redirects]]
from = "https://go.kubebuilder.io/releases/2.:minorpatch/:os/:arch"
to = "https://github.com/kubernetes-sigs/kubebuilder/releases/download/v2.:minorpatch/kubebuilder_2.:minorpatch_:os_:arch.tar.gz"
status = 302
force = true

# v3+ redirects.
# general release redirects
[[redirects]]
from = "https://go.kubebuilder.io/releases/:version"
to = "https://github.com/kubernetes-sigs/kubebuilder/releases/v:version"
Expand All @@ -90,10 +85,15 @@
status = 302
force = true

# release download redirect
[[redirects]]
from = "https://go.kubebuilder.io/releases/:version/:os/:arch"
to = "https://github.com/kubernetes-sigs/kubebuilder/releases/download/v:version/kubebuilder_:os_:arch"
status = 302
# I don't quite know why, but netlify (or at least the dev mode) *insists*
# on eating every other query parameter, so just use paths instead
to = "/.netlify/functions/handle-version/:version/:os/:arch"
# 200 --> don't redirect to the the function then to whereever it says,
# just pretend like the function is mounted directly here
status = 200
force = true

# Tools redirects.
Expand Down