Skip to content

Commit 13e3fff

Browse files
committed
Provide previous release tag for release note generation
1 parent a469a3e commit 13e3fff

File tree

1 file changed

+14
-4
lines changed

1 file changed

+14
-4
lines changed

scripts/release/update-release-notes.py

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,9 @@
66
if TYPE_CHECKING:
77
from argparse import Namespace
88

9-
def generate_release_notes() -> str:
9+
def generate_release_note(previous_release_tag: str) -> str:
1010
script_path = Path(__file__).parent / "generate_release_notes.py"
11-
cp = subprocess.run(["python", str(script_path)], capture_output=True)
11+
cp = subprocess.run(["python", str(script_path), previous_release_tag], capture_output=True)
1212

1313
if cp.returncode != 0:
1414
raise Exception(f"Error generating release notes: {cp.stderr.decode('utf-8')}")
@@ -20,6 +20,7 @@ def main(args: Namespace) -> int:
2020
import semantic_version # type: ignore
2121
import re
2222
import sys
23+
from functools import cmp_to_key
2324

2425
repo = Github(auth=Auth.Token(args.github_token)).get_repo(args.repo)
2526

@@ -55,10 +56,19 @@ def main(args: Namespace) -> int:
5556
return 1
5657
release = candidate_releases[0]
5758

58-
release_notes = generate_release_notes()
59+
# All the releases that are not draft and have a valid semantic version tag
60+
previous_releases = [release for release in releases if semantic_version.validate(release.tag_name[1:]) and not release.draft] # type: ignore
61+
if len(previous_releases) == 0:
62+
print(f"Error: no previous releases found", file=sys.stderr)
63+
return 1
64+
# Sort them based on their semantic version tags.
65+
previous_releases.sort(key=cmp_to_key(lambda a,b: semantic_version.compare(a.tag_name[1:], b.tag_name[1:])), reverse=True) # type: ignore
66+
previous_release = previous_releases[0].tag_name
67+
print(f"Using previous release: {previous_release}")
5968

60-
release.update_release(name=release.title, message=release_notes, draft=release.draft, prerelease=release.prerelease, tag_name=release.tag_name)
69+
release_notes = generate_release_note(previous_release)
6170

71+
release.update_release(name=release.title, message=release_notes, draft=release.draft, prerelease=release.prerelease, tag_name=release.tag_name)
6272
return 0
6373

6474
if __name__ == '__main__':

0 commit comments

Comments
 (0)