Files
scylladb/docs/_ext/scylladb_dynamic_substitutions.py
David Garcia 847882b981 docs: add dynamic substitutions
This pull request adds dynamic substitutions for the following variables:

* `.. |CURRENT_VERSION| replace:: {current_version}`
* `.. |UBUNTU_SCYLLADB_LIST| replace:: scylla-{current_version}.list`
* `.. |CENTOS_SCYLLADB_REPO| replace:: scylla-{current_version}.repo`

As a result, it is no longer needed to update the "Installation on Linux" page manually after every new release.

Closes scylladb/scylladb#17544
2024-03-06 10:25:57 +02:00

45 lines
1.4 KiB
Python

import os
from sphinx.application import Sphinx
from sphinx.util import logging
LOGGER = logging.getLogger(__name__)
class DynamicSubstitutions:
def _get_current_version(self, app):
current_version = os.environ.get('SPHINX_MULTIVERSION_NAME', '')
stable_version = app.config.smv_latest_version
prefix = 'branch-'
version = current_version
if current_version.startswith(prefix):
version = current_version
elif not stable_version.startswith(prefix):
LOGGER.error("Invalid stable_version format in conf.py. It should start with 'branch-'")
else:
version = stable_version
return version.replace(prefix, '')
def run(self, app):
current_version = self._get_current_version(app)
if not hasattr(app.config, 'rst_prolog') or app.config.rst_prolog is None:
app.config.rst_prolog = ""
elif not app.config.rst_prolog.endswith('\n'):
app.config.rst_prolog += '\n'
app.config.rst_prolog += f"""
.. |CURRENT_VERSION| replace:: {current_version}
.. |UBUNTU_SCYLLADB_LIST| replace:: scylla-{current_version}.list
.. |CENTOS_SCYLLADB_REPO| replace:: scylla-{current_version}.repo
"""
def setup(app: Sphinx):
app.connect("builder-inited", DynamicSubstitutions().run)
return {
"version": "0.1",
"parallel_read_safe": True,
"parallel_write_safe": True,
}