From cd71e7d5fd8ef0211e938fb2e7b37f7793b14dac Mon Sep 17 00:00:00 2001 From: Marco Nenciarini Date: Mon, 31 Aug 2026 11:14:07 +0200 Subject: [PATCH] docs(web): use active doc version for install manifest link (#1074) The install snippet always linked to the manifest of the latest released version, regardless of which versioned docs page it was rendered on. Viewing the 0.13.0 installation page therefore pointed at the 0.14.0 manifest. Build the manifest URL from the active doc version directly: each versioned page links its own release tag, and the unreleased "current" docs link the manifest built off `main` instead of a (nonexistent) release tag. --------- Signed-off-by: Marco Nenciarini Signed-off-by: Danish Co-authored-by: Danish --- web/docs/installation.mdx | 13 ++--- web/src/components/Installation/index.tsx | 49 +++++++++++++++++-- web/src/hooks/versions.ts | 36 -------------- .../version-0.13.0/installation.mdx | 13 ++--- .../version-0.14.0/installation.mdx | 13 ++--- 5 files changed, 56 insertions(+), 68 deletions(-) delete mode 100644 web/src/hooks/versions.ts diff --git a/web/docs/installation.mdx b/web/docs/installation.mdx index 027d1e8..4c1c48a 100644 --- a/web/docs/installation.mdx +++ b/web/docs/installation.mdx @@ -54,10 +54,9 @@ Both checks are required before proceeding with the installation. ## Installing the Barman Cloud Plugin -import { InstallationSnippet } from '@site/src/components/Installation'; +import { InstallationSnippet, ManifestVersion } from '@site/src/components/Installation'; -Install the plugin using `kubectl` by applying the manifest for the latest -release: +Install the plugin using `kubectl` by applying the manifest for : @@ -100,10 +99,6 @@ This confirms that the plugin is deployed and ready to use. ## Testing the latest development snapshot -You can also test the latest development snapshot of the plugin with the -following command: +import { DevSnapshotSection } from '@site/src/components/Installation'; -```sh -kubectl apply -f \ - https://raw.githubusercontent.com/cloudnative-pg/plugin-barman-cloud/refs/heads/main/manifest.yaml -``` + diff --git a/web/src/components/Installation/index.tsx b/web/src/components/Installation/index.tsx index 064a0ea..359bd95 100644 --- a/web/src/components/Installation/index.tsx +++ b/web/src/components/Installation/index.tsx @@ -1,16 +1,55 @@ import {ReactElement} from 'react'; import CodeBlock from '@theme/CodeBlock'; -import {useCurrentVersion} from '@site/src/hooks/versions'; +import {useActiveVersion} from '@docusaurus/plugin-content-docs/client'; -// InstallationSnippet is the kubectl incantation to install the lastest -// available version of the Barman Cloud Plugin. +// DEV_MANIFEST_URL is the URL of the manifest.yaml on the main branch of the plugin repo. +const DEV_MANIFEST_URL = + 'https://raw.githubusercontent.com/cloudnative-pg/plugin-barman-cloud/refs/heads/main/manifest.yaml'; + +// InstallationSnippet is the kubectl incantation to install the Barman +// Cloud Plugin: the manifest matching the doc version being viewed, or +// (on the unreleased "current" docs) the latest manifest on main. export function InstallationSnippet(): ReactElement { - const latest = useCurrentVersion('latestReleased'); + const activeVersion = useActiveVersion('default'); + const url = activeVersion && activeVersion.name !== 'current' + ? `https://github.com/cloudnative-pg/plugin-barman-cloud/releases/download/v${activeVersion.name}/manifest.yaml` + : DEV_MANIFEST_URL; return ( {`kubectl apply -f \\ - https://github.com/cloudnative-pg/plugin-barman-cloud/releases/download/v${latest}/manifest.yaml`} + ${url}`} ); } +// ManifestVersion names the manifest the snippet below installs: the +// release tag for a versioned docs page, or the main branch on Dev docs. +export function ManifestVersion(): ReactElement { + const activeVersion = useActiveVersion('default'); + return activeVersion && activeVersion.name !== 'current' + ? v{activeVersion.name} + : <>the latest development snapshot from the main branch; +} + +// DevSnapshotSection offers the main-branch manifest as an alternative; +// on the Dev docs the main install already is that manifest, so hide it. +export function DevSnapshotSection(): ReactElement { + const activeVersion = useActiveVersion('default'); + if (!activeVersion || activeVersion.name === 'current') { + return ( +

The install + command above already applies the latest development + snapshot from the main branch.

+ ); + } + return ( + <> +

You can also test the latest development snapshot of the plugin + with the following command:

+ + {`kubectl apply -f \\ + ${DEV_MANIFEST_URL}`} + + + ); +} diff --git a/web/src/hooks/versions.ts b/web/src/hooks/versions.ts deleted file mode 100644 index 785cc2f..0000000 --- a/web/src/hooks/versions.ts +++ /dev/null @@ -1,36 +0,0 @@ -import {useActiveVersion, useLatestVersion, useVersions} from '@docusaurus/plugin-content-docs/client'; - - -export function useCurrentVersion(fallback: 'latest' | 'latestReleased' = 'latest'): string { - switch (fallback) { - case 'latestReleased': - return useLatestReleasedVersion(); - case 'latest': { - const version = useActiveVersion('default'); - return version?.name ?? useLatestVersion('default')?.name; - } - default: - // The following line ensures that if `fallback` is not 'latest' or 'latestReleased', - // an error is thrown. This can be useful for catching unexpected states. - throw new Error(`Unhandled fallback type: ${fallback}`); - } -} - -export function useLatestReleasedVersion(): string { - const allVersions = useVersions('default'); - - // Filter out "current" to only consider versioned docs - const versionedDocs = allVersions.filter(version => version.name !== 'current'); - - // Handle the case where no versioned documents are found - if (versionedDocs.length === 0) { - return "unknown_version"; - } - - const sortedVersions = versionedDocs.sort((a, b) => { - return b.name.localeCompare(a.name, undefined, { numeric: true, sensitivity: 'base' }); - }); - - // The latest version is the first in the sorted list since versionedDocs was not empty, - return sortedVersions[0].name; -} diff --git a/web/versioned_docs/version-0.13.0/installation.mdx b/web/versioned_docs/version-0.13.0/installation.mdx index 027d1e8..4c1c48a 100644 --- a/web/versioned_docs/version-0.13.0/installation.mdx +++ b/web/versioned_docs/version-0.13.0/installation.mdx @@ -54,10 +54,9 @@ Both checks are required before proceeding with the installation. ## Installing the Barman Cloud Plugin -import { InstallationSnippet } from '@site/src/components/Installation'; +import { InstallationSnippet, ManifestVersion } from '@site/src/components/Installation'; -Install the plugin using `kubectl` by applying the manifest for the latest -release: +Install the plugin using `kubectl` by applying the manifest for : @@ -100,10 +99,6 @@ This confirms that the plugin is deployed and ready to use. ## Testing the latest development snapshot -You can also test the latest development snapshot of the plugin with the -following command: +import { DevSnapshotSection } from '@site/src/components/Installation'; -```sh -kubectl apply -f \ - https://raw.githubusercontent.com/cloudnative-pg/plugin-barman-cloud/refs/heads/main/manifest.yaml -``` + diff --git a/web/versioned_docs/version-0.14.0/installation.mdx b/web/versioned_docs/version-0.14.0/installation.mdx index 027d1e8..4c1c48a 100644 --- a/web/versioned_docs/version-0.14.0/installation.mdx +++ b/web/versioned_docs/version-0.14.0/installation.mdx @@ -54,10 +54,9 @@ Both checks are required before proceeding with the installation. ## Installing the Barman Cloud Plugin -import { InstallationSnippet } from '@site/src/components/Installation'; +import { InstallationSnippet, ManifestVersion } from '@site/src/components/Installation'; -Install the plugin using `kubectl` by applying the manifest for the latest -release: +Install the plugin using `kubectl` by applying the manifest for : @@ -100,10 +99,6 @@ This confirms that the plugin is deployed and ready to use. ## Testing the latest development snapshot -You can also test the latest development snapshot of the plugin with the -following command: +import { DevSnapshotSection } from '@site/src/components/Installation'; -```sh -kubectl apply -f \ - https://raw.githubusercontent.com/cloudnative-pg/plugin-barman-cloud/refs/heads/main/manifest.yaml -``` +