Skip to content

Commit

Permalink
Release script checks refs to versions in changelog
Browse files Browse the repository at this point in the history
  • Loading branch information
martinburchell committed Feb 5, 2024
1 parent 7997359 commit 0ce42b7
Show file tree
Hide file tree
Showing 2 changed files with 88 additions and 12 deletions.
47 changes: 37 additions & 10 deletions docs/source/changelog.rst
Expand Up @@ -38,6 +38,30 @@ Quick links:
- :ref:`2023 <changelog_2023>`
- :ref:`2024 <changelog_2024>`

- :ref:`v2.3.4 <changelog_v2.3.4>`
- :ref:`v2.3.5 <changelog_v2.3.5>`
- :ref:`v2.3.6 <changelog_v2.3.6>`
- :ref:`v2.3.7 <changelog_v2.3.7>`
- :ref:`v2.3.8 <changelog_v2.3.8>`
- :ref:`v2.4.0 <changelog_v2.4.0>`
- :ref:`v2.4.1 <changelog_v2.4.1>`
- :ref:`v2.4.2 <changelog_v2.4.2>`
- :ref:`v2.4.3 <changelog_v2.4.3>`
- :ref:`v2.4.4 <changelog_v2.4.4>`
- :ref:`v2.4.5 <changelog_v2.4.5>`
- :ref:`v2.4.6 <changelog_v2.4.6>`
- :ref:`v2.4.7 <changelog_v2.4.7>`
- :ref:`v2.4.8 <changelog_v2.4.8>`
- :ref:`v2.4.9 <changelog_v2.4.9>`
- :ref:`v2.4.10 <changelog_v2.4.10>`
- :ref:`v2.4.11 <changelog_v2.4.11>`
- :ref:`v2.4.12 <changelog_v2.4.12>`
- :ref:`v2.4.13 <changelog_v2.4.13>`
- :ref:`v2.4.14 <changelog_v2.4.14>`
- :ref:`v2.4.15 <changelog_v2.4.15>`
- :ref:`v2.4.16 <changelog_v2.4.16>`
- :ref:`v2.4.17 <changelog_v2.4.17>`
- :ref:`v2.4.18 <changelog_v2.4.18>`

Contributors
------------
Expand Down Expand Up @@ -2159,8 +2183,6 @@ Current C++/SQLite client, Python/SQLAlchemy server
which wasn't converting to UTC properly.


.. _changelog_v2_3_3:

**Client and server v2.3.3**
^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Expand Down Expand Up @@ -3457,7 +3479,7 @@ Current C++/SQLite client, Python/SQLAlchemy server
places.


.. _changelog_v2_4_8:
.. _changelog_v2.4.8:

**Client and server v2.4.8, released 9 Jul 2021**
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Expand All @@ -3479,7 +3501,7 @@ Current C++/SQLite client, Python/SQLAlchemy server
https://github.com/ucam-department-of-psychiatry/camcops/issues/153


.. _changelog_v2_4_9:
.. _changelog_v2.4.9:

**Client and server v2.4.9, released 6 Aug 2021**
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Expand All @@ -3501,7 +3523,7 @@ Current C++/SQLite client, Python/SQLAlchemy server
<cpft_covid_medical>` (Database revision 0068).


.. _changelog_v2_4_10:
.. _changelog_v2.4.10:

**Server v2.4.10, released 27 Sep 2021**
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Expand All @@ -3521,7 +3543,7 @@ Current C++/SQLite client, Python/SQLAlchemy server
UUIDs: https://github.com/ucam-department-of-psychiatry/camcops/issues/192


.. _changelog_v2_4_11:
.. _changelog_v2.4.11:

**Client and server v2.4.11, released 8 Oct 2021**
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Expand Down Expand Up @@ -3551,7 +3573,7 @@ Current C++/SQLite client, Python/SQLAlchemy server
2022
~~~~

.. _changelog_v2_4_12:
.. _changelog_v2.4.12:

**Server v2.4.12, released 20 Jan 2022**
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Expand Down Expand Up @@ -3650,7 +3672,7 @@ Current C++/SQLite client, Python/SQLAlchemy server
https://github.com/ucam-department-of-psychiatry/camcops/issues/226


.. _changelog_v2_4_13:
.. _changelog_v2.4.13:

**Client and server v2.4.13, released 18 Aug 2022**
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Expand Down Expand Up @@ -3685,6 +3707,7 @@ Current C++/SQLite client, Python/SQLAlchemy server
- **New task:** :ref:`Psychosocial fActors Relevant to BrAin DISorders in
Europe-24 (PARADISE-24) <paradise24>`. (Database revision 0076.)

.. _changelog_v2.4.14:

**Server v2.4.14, released 17 Nov 2022**
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Expand All @@ -3711,7 +3734,7 @@ Current C++/SQLite client, Python/SQLAlchemy server
~~~~


.. _changelog_v2_4_15:
.. _changelog_v2.4.15:

**Client and server v2.4.15, released 24 Mar 2023**
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Expand Down Expand Up @@ -3769,7 +3792,7 @@ Current C++/SQLite client, Python/SQLAlchemy server
https://github.com/ucam-department-of-psychiatry/camcops/issues/278


.. _changelog_v2_4_16:
.. _changelog_v2.4.16:

**Client and server v2.4.16, released 13 Jun 2023**
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Expand Down Expand Up @@ -3799,6 +3822,8 @@ Current C++/SQLite client, Python/SQLAlchemy server
text is greater in height than the images.


.. _changelog_v2.4.17:

**Client and server v2.4.17, released 19 Aug 2023**
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Expand All @@ -3813,6 +3838,8 @@ Current C++/SQLite client, Python/SQLAlchemy server
2024
~~~~

.. _changelog_v2.4.18:

**Client and server v2.4.18, released 05 Feb 2024**
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Expand Down
53 changes: 51 additions & 2 deletions tools/release_new_version.py
Expand Up @@ -343,7 +343,7 @@ def get_ios_version(self) -> Tuple[int, int, int, int]:

raise MissingVersionException("Could not find version in Info.plist")

def check_quick_links(self) -> None:
def check_quick_link_years(self) -> None:
ref_regex = r"- :ref:`(\d{4}) <changelog_(\d{4})>`$"
refs = []

Expand Down Expand Up @@ -407,6 +407,54 @@ def check_quick_links(self) -> None:
"and year headings"
)

def check_quick_link_versions(self) -> None:
ref_regex = r"- :ref:`v(\d+\.\d+\.\d+) <changelog_v(\d+\.\d+\.\d+)>`$"
refs = []

with open(CHANGELOG, "r") as f:
for line in f.readlines():
m = re.match(ref_regex, line)
if m is not None:
refs.append((Version(m.group(1)), Version(m.group(2))))

if (self.release_version, self.release_version) not in refs:
self.errors.append(
f"No :ref: for {self.release_version} in changelog"
)

target_regex = r"\.\. _changelog_v(\d+\.\d+\.\d+)\:$"

targets = []

with open(CHANGELOG, "r") as f:
for line in f.readlines():
m = re.match(target_regex, line)
if m is not None:
target_version = Version(m.group(1))
if (target_version, target_version) not in refs:
self.errors.append(
f"No :ref: for version {target_version} "
"in changelog"
)
targets.append((target_version, target_version))

versions = []
for version, date in self.released_versions:
versions.append((version, version))

if targets != refs or versions != refs:
self.errors.append(":ref: versions:")
self.errors.append([r[0] for r in refs])
self.errors.append("target versions:")
self.errors.append([t[0] for t in targets])
self.errors.append("released versions:")
self.errors.append([v[0] for v in versions])

self.errors.append(
"Mismatch between :ref: versions, target versions "
"and version headings"
)

def check_server_version(self) -> None:
if self.new_server_version == self.progress_version:
self.errors.append(
Expand Down Expand Up @@ -680,7 +728,8 @@ def perform_checks(self) -> None:
f"({latest_date}) does not match '{self.release_date}'"
)

self.check_quick_links()
self.check_quick_link_years()
self.check_quick_link_versions()

self.check_server_version()
if self.should_release_server:
Expand Down

0 comments on commit 0ce42b7

Please sign in to comment.