From 64214c690bb6ec0a669c2e8ce49bf6b9c0039772 Mon Sep 17 00:00:00 2001 From: blam Date: Tue, 10 Sep 2024 15:45:11 +0200 Subject: [PATCH] chore: move some things to typescript Signed-off-by: blam --- microsite/docusaurus.config.ts | 5 +++-- microsite/releases.ts | 24 ++++++++++++++++++++++++ microsite/{sidebars.mjs => sidebars.ts} | 21 ++------------------- microsite/tsconfig.json | 1 + 4 files changed, 30 insertions(+), 21 deletions(-) create mode 100644 microsite/releases.ts rename microsite/{sidebars.mjs => sidebars.ts} (96%) diff --git a/microsite/docusaurus.config.ts b/microsite/docusaurus.config.ts index 8f4c08f8e9..726a1fbf48 100644 --- a/microsite/docusaurus.config.ts +++ b/microsite/docusaurus.config.ts @@ -22,6 +22,7 @@ import { themes } from 'prism-react-renderer'; import type * as Preset from '@docusaurus/preset-classic'; import { Config } from '@docusaurus/types'; import RedirectPlugin from '@docusaurus/plugin-client-redirects'; +import { releases } from './releases'; const backstageTheme = themes.vsDark; backstageTheme.plain.backgroundColor = '#232323'; @@ -85,7 +86,7 @@ const config: Config = { docs: { editUrl: 'https://github.com/backstage/backstage/edit/master/docs/', path: '../docs', - sidebarPath: 'sidebars.mjs', + sidebarPath: 'sidebars.ts', ...(useVersionedDocs ? { includeCurrentVersion: true, @@ -295,7 +296,7 @@ const config: Config = { position: 'left', }, { - to: 'docs/releases/v1.30.0', + to: `docs/releases/${releases[0]}`, label: 'Releases', position: 'left', }, diff --git a/microsite/releases.ts b/microsite/releases.ts new file mode 100644 index 0000000000..21e1451cec --- /dev/null +++ b/microsite/releases.ts @@ -0,0 +1,24 @@ +import fs from 'node:fs'; +import path from 'node:path'; + +const docsDir = path.resolve( + path.dirname(new URL(import.meta.url).pathname), + '../docs', +); + +export const releases = fs + .readdirSync(path.resolve(docsDir, 'releases')) + .filter(doc => doc.match(/^v\d+\.\d+\.\d+\.md$/)) + .map(doc => doc.replace(/\.md$/, '')) + .sort((a, b) => { + // Semver sort + const aVal = a + .slice(1) + .split('.') + .reduce((acc, val) => acc * 1000 + parseInt(val), 0); + const bVal = b + .slice(1) + .split('.') + .reduce((acc, val) => acc * 1000 + parseInt(val), 0); + return bVal - aVal; + }); diff --git a/microsite/sidebars.mjs b/microsite/sidebars.ts similarity index 96% rename from microsite/sidebars.mjs rename to microsite/sidebars.ts index 675f53a7d6..6b07952f2f 100644 --- a/microsite/sidebars.mjs +++ b/microsite/sidebars.ts @@ -1,21 +1,4 @@ -import fs from 'node:fs'; -import path from 'node:path'; - -const docsDir = path.resolve( - path.dirname(new URL(import.meta.url).pathname), - '../docs', -); - -const allReleaseDocs = fs.readdirSync(path.resolve(docsDir, 'releases')); -const mainRleases = allReleaseDocs - .filter(doc => doc.match(/^v\d+\.\d+\.\d+\.md$/)) - .map(doc => doc.replace(/\.md$/, '')) - .sort((a, b) => { // Semver sort - const aVal = a.slice(1).split('.').reduce((acc, val) => acc * 1000 + parseInt(val), 0); - const bVal = b.slice(1).split('.').reduce((acc, val) => acc * 1000 + parseInt(val), 0); - return bVal - aVal; - }) - .map(release => `releases/${release}`); +import { releases } from './releases'; export default { docs: { @@ -543,6 +526,6 @@ export default { References: ['references/glossary'], }, releases: { - 'Release Notes': mainRleases + 'Release Notes': releases.map(release => `releases/${release}`), }, }; diff --git a/microsite/tsconfig.json b/microsite/tsconfig.json index 71bc403643..9a5106747e 100644 --- a/microsite/tsconfig.json +++ b/microsite/tsconfig.json @@ -2,6 +2,7 @@ "extends": "@docusaurus/tsconfig", "compilerOptions": { "baseUrl": ".", + "allowJs": true, "types": [ "node", "@docusaurus/module-type-aliases",