Use custom script for getting release notes

This commit is contained in:
Romain Vigier
2021-08-27 11:39:51 +02:00
parent 5b22f76f15
commit 99ccb1be59
2 changed files with 64 additions and 3 deletions
+2 -3
View File
@@ -107,15 +107,14 @@ package:
"${PACKAGE_REGISTRY_URL}/${CI_COMMIT_TAG}/${PACKAGE_NAME}"
release-notes:
extends: .python
stage: deploy
needs:
- reuse
image: rust:latest
rules:
- if: $CI_COMMIT_TAG
script:
- cargo install parse-changelog
- parse-changelog --version-format="^\d+$" CHANGELOG.md $CI_COMMIT_TAG > release-notes.md
- ./build-aux/get_release_notes.py $CI_COMMIT_TAG > release-notes.md
artifacts:
paths:
- release-notes.md
+62
View File
@@ -0,0 +1,62 @@
#!/usr/bin/env python3
# SPDX-FileCopyrightText: 2021 Romain Vigier <contact AT romainvigier.fr>
# SPDX-License-Identifier: GPL-3.0-or-later
"""Get release notes for a specific release."""
import argparse
import re
from typing import Dict, List
releases: Dict[str, str] = {}
def parse_changelog(path: str):
"""Parse a changelog file for versions and release notes.
Args:
path (str): Path to the changelog file.
"""
release_regex = re.compile(r"^##\s")
version_regex = re.compile(r"([\d\.]+)")
current_version = ''
current_notes: List[str] = []
with open(path, "r") as f:
for line in f.readlines():
if release_regex.match(line):
if current_version != '':
releases[current_version] = ''.join(current_notes).strip()
current_notes = []
current_version = version_regex.findall(line)[0]
else:
current_notes.append(line)
releases[current_version] = ''.join(current_notes).strip()
def print_release_notes(version: str):
"""Print the release notes of the given release.
Args:
version (str): The requested version.
"""
print(releases[version.replace("v", "")])
argparser = argparse.ArgumentParser()
argparser.add_argument(
"-f", "--file",
default="CHANGELOG.md",
help="Path to the changelog file",
metavar="CHANGELOG")
argparser.add_argument("version", help="Version to get the release notes for")
args = argparser.parse_args()
parse_changelog(args.file)
print_release_notes(args.version)