Skip to content
Snippets Groups Projects
Unverified Commit 6d282a9c authored by Erik Johnston's avatar Erik Johnston Committed by GitHub
Browse files

Make release script write correct no-op changelog (#12127)

As we want to include the previous version in the "No new changes..."
string.
parent 3b9142f7
No related branches found
No related tags found
No related merge requests found
Update release script to insert the previous version when writing "No significant changes" line in the changelog.
...@@ -17,6 +17,8 @@ ...@@ -17,6 +17,8 @@
"""An interactive script for doing a release. See `cli()` below. """An interactive script for doing a release. See `cli()` below.
""" """
import glob
import os
import re import re
import subprocess import subprocess
import sys import sys
...@@ -209,8 +211,8 @@ def prepare(): ...@@ -209,8 +211,8 @@ def prepare():
with open("synapse/__init__.py", "w") as f: with open("synapse/__init__.py", "w") as f:
f.write(parsed_synapse_ast.dumps()) f.write(parsed_synapse_ast.dumps())
# Generate changelogs # Generate changelogs.
run_until_successful("python3 -m towncrier", shell=True) generate_and_write_changelog(current_version)
# Generate debian changelogs # Generate debian changelogs
if parsed_new_version.pre is not None: if parsed_new_version.pre is not None:
...@@ -523,5 +525,29 @@ def get_changes_for_version(wanted_version: version.Version) -> str: ...@@ -523,5 +525,29 @@ def get_changes_for_version(wanted_version: version.Version) -> str:
return "\n".join(version_changelog) return "\n".join(version_changelog)
def generate_and_write_changelog(current_version: version.Version):
# We do this by getting a draft so that we can edit it before writing to the
# changelog.
result = run_until_successful(
"python3 -m towncrier --draft", shell=True, capture_output=True
)
new_changes = result.stdout.decode("utf-8")
new_changes = new_changes.replace(
"No significant changes.", f"No significant changes since {current_version}."
)
# Prepend changes to changelog
with open("CHANGES.md", "r+") as f:
existing_content = f.read()
f.seek(0, 0)
f.write(new_changes)
f.write("\n")
f.write(existing_content)
# Remove all the news fragments
for f in glob.iglob("changelog.d/*.*"):
os.remove(f)
if __name__ == "__main__": if __name__ == "__main__":
cli() cli()
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment