Use custom script for getting release notes
This commit is contained in:
+2
-3
@@ -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
|
||||
|
||||
Executable
+62
@@ -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)
|
||||
Reference in New Issue
Block a user