Browse Source

Add support for distinguishing released/in-development versions

Jan Holthuis 5 years ago
parent
commit
4cae607d1a
2 changed files with 17 additions and 0 deletions
  1. 3 0
      sphinx_multiversion/main.py
  2. 14 0
      sphinx_multiversion/sphinx.py

+ 3 - 0
sphinx_multiversion/main.py

@@ -1,5 +1,6 @@
 # -*- coding: utf-8 -*-
 import os
+import re
 import json
 import pathlib
 import subprocess
@@ -55,6 +56,7 @@ def main(argv=None):
     tag_whitelist = config.get('smv_tag_whitelist', sphinx.DEFAULT_TAG_WHITELIST)
     branch_whitelist = config.get('smv_branch_whitelist', sphinx.DEFAULT_BRANCH_WHITELIST)
     remote_whitelist = config.get('smv_remote_whitelist', sphinx.DEFAULT_REMOTE_WHITELIST)
+    released_pattern = config.get('smv_released_pattern', sphinx.DEFAULT_RELEASED_PATTERN)
     outputdir_format = config.get('smv_outputdir_format', sphinx.DEFAULT_OUTPUTDIR_FORMAT)
 
     gitroot = pathlib.Path('.').resolve()
@@ -93,6 +95,7 @@ def main(argv=None):
                 "name": versionref.name,
                 "version": versionref.version,
                 "release": versionref.release,
+                "is_released": bool(re.match(released_pattern, versionref.refname)),
                 "source": versionref.source,
                 "sourcedir": srcdir,
                 "outputdir": outputdir,

+ 14 - 0
sphinx_multiversion/sphinx.py

@@ -12,6 +12,7 @@ logger = logging.getLogger(__name__)
 DEFAULT_TAG_WHITELIST = r'^.*$'
 DEFAULT_BRANCH_WHITELIST = r'^.*$'
 DEFAULT_REMOTE_WHITELIST = None
+DEFAULT_RELEASED_PATTERN = r'^tags/.*$'
 DEFAULT_OUTPUTDIR_FORMAT = r'{version.version}/{language}'
 
 Version = collections.namedtuple('Version', [
@@ -19,6 +20,7 @@ Version = collections.namedtuple('Version', [
     'url',
     'version',
     'release',
+    'is_released',
 ])
 
 
@@ -35,6 +37,7 @@ class VersionInfo:
             url=self.vpathto(v["name"]),
             version=v["version"],
             release=v["release"],
+            is_released=v["is_released"],
         )
 
     @property
@@ -47,6 +50,16 @@ class VersionInfo:
         return [self._dict_to_versionobj(v) for v in self.metadata.values()
                 if v["source"] != "tags"]
 
+    @property
+    def releases(self):
+        return [self._dict_to_versionobj(v) for v in self.metadata.values()
+                if v["is_released"]]
+
+    @property
+    def in_development(self):
+        return [self._dict_to_versionobj(v) for v in self.metadata.values()
+                if not v["is_released"]]
+
     def __iter__(self):
         for item in self.tags:
             yield item
@@ -146,6 +159,7 @@ def setup(app):
     app.add_config_value("smv_tag_whitelist", DEFAULT_TAG_WHITELIST, "html")
     app.add_config_value("smv_branch_whitelist", DEFAULT_BRANCH_WHITELIST, "html")
     app.add_config_value("smv_remote_whitelist", DEFAULT_REMOTE_WHITELIST, "html")
+    app.add_config_value("smv_released_pattern", DEFAULT_RELEASED_PATTERN, "html")
     app.add_config_value("smv_outputdir_format", DEFAULT_OUTPUTDIR_FORMAT, "html")
     app.connect("config-inited", config_inited)