Files

63 lines
1.6 KiB
Python
Executable File

#!/usr/bin/env python3
# SPDX-FileCopyrightText: Night Theme Switcher Contributors
# 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)