Create a new version section if the top version has a release date
Signed-off-by: Gilles Peskine <Gilles.Peskine@arm.com>
This commit is contained in:
parent
6e97c43959
commit
eebf24f7a8
1 changed files with 16 additions and 22 deletions
|
@ -83,6 +83,9 @@ class ChangelogFormat:
|
||||||
Return ``(header, top_version_title, top_version_body, trailer)``
|
Return ``(header, top_version_title, top_version_body, trailer)``
|
||||||
where ``changelog_file_content == header + top_version_title +
|
where ``changelog_file_content == header + top_version_title +
|
||||||
top_version_body + trailer``.
|
top_version_body + trailer``.
|
||||||
|
|
||||||
|
If the top version is already released, create a new top
|
||||||
|
version section for an unreleased version.
|
||||||
"""
|
"""
|
||||||
raise NotImplementedError
|
raise NotImplementedError
|
||||||
|
|
||||||
|
@ -108,6 +111,12 @@ class ChangelogFormat:
|
||||||
class TextChangelogFormat(ChangelogFormat):
|
class TextChangelogFormat(ChangelogFormat):
|
||||||
"""The traditional Mbed TLS changelog format."""
|
"""The traditional Mbed TLS changelog format."""
|
||||||
|
|
||||||
|
_unreleased_version_text = b'= mbed TLS x.x.x branch released xxxx-xx-xx'
|
||||||
|
@classmethod
|
||||||
|
def is_released_version(cls, title):
|
||||||
|
# Look for an incomplete release date
|
||||||
|
return not re.search(br'[0-9x]{4}-[0-9x]{2}-[0-9x]?x', title)
|
||||||
|
|
||||||
_top_version_re = re.compile(br'(?:\A|\n)(=[^\n]*\n+)(.*?\n)(?:=|$)',
|
_top_version_re = re.compile(br'(?:\A|\n)(=[^\n]*\n+)(.*?\n)(?:=|$)',
|
||||||
re.DOTALL)
|
re.DOTALL)
|
||||||
@classmethod
|
@classmethod
|
||||||
|
@ -116,8 +125,14 @@ class TextChangelogFormat(ChangelogFormat):
|
||||||
m = re.search(cls._top_version_re, changelog_file_content)
|
m = re.search(cls._top_version_re, changelog_file_content)
|
||||||
top_version_start = m.start(1)
|
top_version_start = m.start(1)
|
||||||
top_version_end = m.end(2)
|
top_version_end = m.end(2)
|
||||||
|
top_version_title = m.group(1)
|
||||||
|
top_version_body = m.group(2)
|
||||||
|
if cls.is_released_version(top_version_title):
|
||||||
|
top_version_end = top_version_start
|
||||||
|
top_version_title = cls._unreleased_version_text + b'\n\n'
|
||||||
|
top_version_body = b''
|
||||||
return (changelog_file_content[:top_version_start],
|
return (changelog_file_content[:top_version_start],
|
||||||
m.group(1), m.group(2),
|
top_version_title, top_version_body,
|
||||||
changelog_file_content[top_version_end:])
|
changelog_file_content[top_version_end:])
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
|
@ -173,27 +188,6 @@ class ChangeLog:
|
||||||
_version_number_re = re.compile(br'[0-9]+\.[0-9A-Za-z.]+')
|
_version_number_re = re.compile(br'[0-9]+\.[0-9A-Za-z.]+')
|
||||||
_incomplete_version_number_re = re.compile(br'.*\.[A-Za-z]')
|
_incomplete_version_number_re = re.compile(br'.*\.[A-Za-z]')
|
||||||
|
|
||||||
def section_is_released_version(self, title):
|
|
||||||
"""Whether this section is for a released version.
|
|
||||||
|
|
||||||
True if the given level-2 section title indicates that this section
|
|
||||||
contains released changes, otherwise False.
|
|
||||||
"""
|
|
||||||
# Assume that a released version has a numerical version number
|
|
||||||
# that follows a particular pattern. These criteria may be revised
|
|
||||||
# as needed in future versions of this script.
|
|
||||||
version_number = re.search(self._version_number_re, title)
|
|
||||||
if version_number:
|
|
||||||
return not re.search(self._incomplete_version_number_re,
|
|
||||||
version_number.group(0))
|
|
||||||
else:
|
|
||||||
return False
|
|
||||||
|
|
||||||
def unreleased_version_title(self):
|
|
||||||
"""The title to use if creating a new section for an unreleased version."""
|
|
||||||
# pylint: disable=no-self-use; this method may be overridden
|
|
||||||
return b'Unreleased changes'
|
|
||||||
|
|
||||||
def add_categories_from_text(self, filename, line_offset,
|
def add_categories_from_text(self, filename, line_offset,
|
||||||
text, allow_unknown_category):
|
text, allow_unknown_category):
|
||||||
"""Parse a version section or entry file."""
|
"""Parse a version section or entry file."""
|
||||||
|
|
Loading…
Reference in a new issue