collapse pre-releases into final releases
When a final release is prepared, stop showing any preceding pre-releases for that same version. Change-Id: I0a73c72de1af5796f90deaaabbc2dbaba7abee32 Signed-off-by: Doug Hellmann <doug@doughellmann.com>
This commit is contained in:
parent
2932c2b000
commit
cdd514b9f4
@ -20,8 +20,8 @@ from docutils import nodes
|
||||
from docutils.parsers import rst
|
||||
from docutils.parsers.rst import directives
|
||||
from docutils.statemachine import ViewList
|
||||
import pbr
|
||||
from sphinx.util.nodes import nested_parse_with_titles
|
||||
|
||||
import yaml
|
||||
|
||||
from openstack_releases import governance
|
||||
@ -62,6 +62,39 @@ def _get_deliverable_type(deliverable_types, name):
|
||||
return 'type:other'
|
||||
|
||||
|
||||
def _collapse_deliverable_history(app, name, info):
|
||||
"""Collapse pre-releases into their final release.
|
||||
|
||||
Edit the info dictionary in place.
|
||||
|
||||
"""
|
||||
# Collapse pre-releases into their final release.
|
||||
releases = []
|
||||
known_versions = set()
|
||||
for r in reversed(info.get('releases', [])):
|
||||
try:
|
||||
parsed_vers = pbr.version.SemanticVersion.from_pip_string(
|
||||
str(r['version']))
|
||||
vers_tuple = parsed_vers.version_tuple()
|
||||
except:
|
||||
# If we can't parse the version, it must be some sort
|
||||
# of made up legacy tag. Ignore the parse error
|
||||
# and include the value in our output.
|
||||
releases.append(r)
|
||||
else:
|
||||
if len(vers_tuple) != 3:
|
||||
# This is not a normal release, so assume it
|
||||
# is a pre-release.
|
||||
final = parsed_vers.brief_string()
|
||||
if final in known_versions:
|
||||
app.info('[deliverables] ignoring %s %s' %
|
||||
(name, r['version']))
|
||||
continue
|
||||
releases.append(r)
|
||||
known_versions.add(r['version'])
|
||||
info['releases'] = list(reversed(releases))
|
||||
|
||||
|
||||
class DeliverableDirectiveBase(rst.Directive):
|
||||
|
||||
option_spec = {
|
||||
@ -104,10 +137,12 @@ class DeliverableDirectiveBase(rst.Directive):
|
||||
deliverable_name,
|
||||
)
|
||||
with open(filename, 'r') as f:
|
||||
d_info = yaml.load(f.read())
|
||||
_collapse_deliverable_history(app, deliverable_name, d_info)
|
||||
deliverables[deliverable_type].append(
|
||||
(deliverable_name,
|
||||
filename,
|
||||
yaml.load(f.read())))
|
||||
d_info))
|
||||
|
||||
for type_tag in self._TYPE_ORDER:
|
||||
self._add_deliverables(
|
||||
@ -202,7 +237,7 @@ class DeliverableDirectiveBase(rst.Directive):
|
||||
|
||||
_title(deliverable_name, '=')
|
||||
|
||||
app.info('[deliverables] %s' % deliverable_name)
|
||||
app.info('[deliverables] rendering %s' % deliverable_name)
|
||||
|
||||
release_notes = deliverable_info.get('release-notes')
|
||||
if release_notes:
|
||||
|
Loading…
x
Reference in New Issue
Block a user