diff --git a/sphinx_multiversion/main.py b/sphinx_multiversion/main.py index a287aec4..d6b8cd47 100644 --- a/sphinx_multiversion/main.py +++ b/sphinx_multiversion/main.py @@ -92,6 +92,12 @@ def load_sphinx_config_worker(q, confpath, confoverrides, add_defaults): "html", str, ) + current_config.add( + "smv_toplevelref", + sphinx.DEFAULT_TOPLEVELREF, + "html", + str, + ) current_config.add("smv_prefer_remote_refs", False, "html", bool) current_config.pre_init_values() current_config.init_values() @@ -280,6 +286,10 @@ def main(argv=None): ref=gitref, config=current_config, ) + + if gitref.name == config.smv_toplevelref: + outputdir = "" + if outputdir in outputdirs: logger.warning( "outputdir '%s' for %s conflicts with other versions", diff --git a/sphinx_multiversion/sphinx.py b/sphinx_multiversion/sphinx.py index dbdbd92c..a0b04fe3 100644 --- a/sphinx_multiversion/sphinx.py +++ b/sphinx_multiversion/sphinx.py @@ -44,6 +44,7 @@ DEFAULT_REMOTE_WHITELIST = None DEFAULT_RELEASED_PATTERN = r"^tags/.*$" DEFAULT_OUTPUTDIR_FORMAT = r"{ref.name}" +DEFAULT_TOPLEVELREF = None Version = collections.namedtuple( "Version", @@ -53,6 +54,7 @@ "version", "release", "is_released", + "creatordate", ], ) @@ -71,6 +73,7 @@ def _dict_to_versionobj(self, v): version=v["version"], release=v["release"], is_released=v["is_released"], + creatordate=v["creatordate"], ) @property @@ -165,6 +168,13 @@ def vpathto(self, other_version_name): ) +def format_date(value, format="%Y-%m-%d"): + date_obj = datetime.datetime.strptime( + value, DATE_FMT + ) # Convert the date string to a datetime object + return date_obj.strftime(format) # Format to desired output + + def html_page_context(app, pagename, templatename, context, doctree): versioninfo = VersionInfo( app, context, app.config.smv_metadata, app.config.smv_current_version @@ -177,6 +187,9 @@ def html_page_context(app, pagename, templatename, context, doctree): context["latest_version"] = versioninfo[app.config.smv_latest_version] context["html_theme"] = app.config.html_theme + # Add a filter to format the date + app.builder.templates.environment.filters["format_date"] = format_date + def config_inited(app, config): """Update the Sphinx builder. @@ -236,6 +249,7 @@ def setup(app): app.add_config_value( "smv_outputdir_format", DEFAULT_OUTPUTDIR_FORMAT, "html" ) + app.add_config_value("smv_toplevelref", DEFAULT_TOPLEVELREF, "html") app.connect("config-inited", config_inited) return {