mirror of
https://github.com/goauthentik/authentik
synced 2026-04-25 17:15:26 +02:00
website: Omit Drafts From Version Picker (#19505)
This commit is contained in:
@@ -12,6 +12,46 @@ import { parseFileContentFrontMatter } from "@docusaurus/utils/lib/markdownUtils
|
||||
import FastGlob from "fast-glob";
|
||||
import { coerce } from "semver";
|
||||
|
||||
/**
|
||||
* Number of supported releases to show in the sidebar.
|
||||
*/
|
||||
export const SUPPORTED_RELEASE_COUNT = 3;
|
||||
|
||||
/**
|
||||
* @typedef {FastGlob.Entry & AKReleaseFile} AKReleaseFileEntry
|
||||
*/
|
||||
|
||||
/**
|
||||
* Reads and parses the front matter of recent release files.
|
||||
*
|
||||
* @param {string} releasesParentDirectory
|
||||
* @param {AKReleaseFileEntry} release
|
||||
* @param {number} index
|
||||
*/
|
||||
function parseRelease(releasesParentDirectory, release, index) {
|
||||
if (index > SUPPORTED_RELEASE_COUNT - 1) {
|
||||
return release;
|
||||
}
|
||||
|
||||
const extension = extname(release.dirent.name);
|
||||
|
||||
const fileContent = readFileSync(
|
||||
join(releasesParentDirectory, `${release.path}${extension}`),
|
||||
"utf-8",
|
||||
);
|
||||
|
||||
const { frontMatter } = parseFileContentFrontMatter(fileContent);
|
||||
|
||||
if (frontMatter.beta) {
|
||||
release.name += " (Release Candidate)";
|
||||
}
|
||||
|
||||
return {
|
||||
...release,
|
||||
frontMatter,
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Collect all Markdown files from the releases directory.
|
||||
*
|
||||
@@ -20,7 +60,7 @@ import { coerce } from "semver";
|
||||
*/
|
||||
export function collectReleaseFiles(releasesParentDirectory) {
|
||||
/**
|
||||
* @type {Array<FastGlob.Entry & AKReleaseFile>}
|
||||
* @type {AKReleaseFileEntry[]}
|
||||
*/
|
||||
const releaseFiles = FastGlob.sync("releases/**/v*.{md,mdx}", {
|
||||
cwd: releasesParentDirectory,
|
||||
@@ -45,30 +85,13 @@ export function collectReleaseFiles(releasesParentDirectory) {
|
||||
return b.name.localeCompare(a.name);
|
||||
});
|
||||
|
||||
const [latestRelease] = releaseFiles;
|
||||
const parsedReleaseFiles = releaseFiles.map((release, index) =>
|
||||
parseRelease(releasesParentDirectory, release, index),
|
||||
);
|
||||
|
||||
if (latestRelease) {
|
||||
const extension = extname(latestRelease.dirent.name);
|
||||
|
||||
const fileContent = readFileSync(
|
||||
join(releasesParentDirectory, `${latestRelease.path}${extension}`),
|
||||
"utf-8",
|
||||
);
|
||||
|
||||
const { frontMatter } = parseFileContentFrontMatter(fileContent);
|
||||
|
||||
latestRelease.frontMatter = frontMatter;
|
||||
|
||||
if (latestRelease.frontMatter.beta) {
|
||||
latestRelease.name += " (Release Candidate)";
|
||||
}
|
||||
}
|
||||
|
||||
return releaseFiles;
|
||||
return parsedReleaseFiles;
|
||||
}
|
||||
|
||||
export const SUPPORTED_RELEASE_COUNT = 3;
|
||||
|
||||
/**
|
||||
*
|
||||
* @param {AKReleaseFile[]} releaseFiles
|
||||
|
||||
@@ -32,7 +32,9 @@ async function akReleasesPlugin(loadContext, options) {
|
||||
};
|
||||
|
||||
const releases = collectReleaseFiles(options.docsDirectory);
|
||||
const releaseNames = releases.map((release) => release.name);
|
||||
const releaseNames = releases
|
||||
.filter((release) => !release.frontMatter?.draft)
|
||||
.map((release) => release.name);
|
||||
|
||||
const outputPath = path.join(loadContext.siteDir, "static", RELEASES_FILENAME);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user