From 6f54e25f96f0aba30d54fc2d6e6a5fc84f5d972e Mon Sep 17 00:00:00 2001 From: Minijackson Date: Thu, 12 Dec 2024 15:20:56 +0100 Subject: [PATCH] docs: support multiple versions --- docs/_static/multi-version.css | 44 ++++++++++++++++++++++++++++++ docs/_templates/multi-version.html | 18 ++++++++++++ docs/conf.py | 33 +++++++++++++++++++++- 3 files changed, 94 insertions(+), 1 deletion(-) create mode 100644 docs/_static/multi-version.css create mode 100644 docs/_templates/multi-version.html diff --git a/docs/_static/multi-version.css b/docs/_static/multi-version.css new file mode 100644 index 00000000..3480bc58 --- /dev/null +++ b/docs/_static/multi-version.css @@ -0,0 +1,44 @@ +.multi-version { + font-size: var(--sidebar-item-font-size); + border-top: 1px solid var(--color-background-border); + margin-bottom: 1em; +} + +.multi-version summary { + color: var(--color-sidebar-caption-text); + font-size: var(--sidebar-caption-font-size); + font-weight: 700; + text-transform: uppercase; + + margin: 0; + padding: var(--sidebar-item-spacing-vertical) var(--sidebar-item-spacing-horizontal); +} + +.multi-version ul { + display: grid; + grid-template-columns: 1fr 1fr; + + list-style: none; + padding: 0; + margin: 0; +} + +.multi-version ul a { + box-sizing: border-box; + display: inline-block; + height: 100%; + line-height: var(--sidebar-item-line-height); + overflow-wrap: anywhere; + padding: var(--sidebar-item-spacing-vertical) var(--sidebar-item-spacing-horizontal); + text-decoration: none; + width: 100%; +} + +.multi-version summary:hover, +.multi-version ul a:hover { + background: var(--color-background-hover); +} + +.multi-version ul a.current { + font-weight: 700; +} diff --git a/docs/_templates/multi-version.html b/docs/_templates/multi-version.html new file mode 100644 index 00000000..11b0a47f --- /dev/null +++ b/docs/_templates/multi-version.html @@ -0,0 +1,18 @@ +{% if versions %} +
+
+ {{ _('Versions') }}: + +
+
+{% endif %} diff --git a/docs/conf.py b/docs/conf.py index 852aff42..3b2db04c 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -3,8 +3,10 @@ # For the full list of built-in configuration values, see the documentation: # https://www.sphinx-doc.org/en/master/usage/configuration.html +import json import os import sys +from pathlib import Path # Enables importing our custom "pygments_styles" module sys.path.append(os.path.abspath("./_ext")) @@ -15,6 +17,7 @@ project = "EPNix" copyright = "The EPNix Contributors" author = "The EPNix Contributors" +release = "nixos-24.05" language = "en" @@ -73,7 +76,7 @@ # https://www.sphinx-doc.org/en/master/usage/configuration.html#options-for-html-output html_static_path = ["_static"] -html_baseurl = "https://epics-extensions.github.io/EPNix/" +html_baseurl = f"https://epics-extensions.github.io/EPNix/{release}/" html_theme = "furo" html_theme_options = { @@ -105,6 +108,34 @@ html_logo = "logo.svg" html_favicon = "favicon.svg" +# Multi version + +html_sidebars = { + "**": [ + "sidebar/brand.html", + "sidebar/search.html", + "sidebar/scroll-start.html", + "sidebar/navigation.html", + "sidebar/scroll-end.html", + "multi-version.html", + ] +} + +html_css_files = ["multi-version.css"] + +html_context = {} + +versions = Path("./versions.json") +if versions.exists(): + with versions.open() as f: + html_context["versions"] = json.load(f) + + # Mark current version as current + current_version = next( + el for el in html_context["versions"] if el["name"] == release + ) + current_version["current"] = True + # -- Options for Man output -------------------------------------------------- # https://www.sphinx-doc.org/en/master/usage/configuration.html#options-for-manual-page-output