aboutsummaryrefslogtreecommitdiff
path: root/.github/scripts/generate_release_notes.py
diff options
context:
space:
mode:
authorspicyjpeg <88942473+spicyjpeg@users.noreply.github.com>2021-12-23 22:09:06 +0100
committerspicyjpeg <88942473+spicyjpeg@users.noreply.github.com>2021-12-23 22:09:06 +0100
commit2e6625481cd006d0a9d68285ce557f195030718e (patch)
tree5a65f290c20cde7a34ceb95fc40f0945ba5968d7 /.github/scripts/generate_release_notes.py
parent6c7512ff42805e9399dfee8b67e2f70fa55909d3 (diff)
downloadpsn00bsdk-2e6625481cd006d0a9d68285ce557f195030718e.tar.gz
Fix CdGetSector size inconsistency, update changelog
Diffstat (limited to '.github/scripts/generate_release_notes.py')
-rw-r--r--.github/scripts/generate_release_notes.py46
1 files changed, 15 insertions, 31 deletions
diff --git a/.github/scripts/generate_release_notes.py b/.github/scripts/generate_release_notes.py
index f3e4870..e3fbc7f 100644
--- a/.github/scripts/generate_release_notes.py
+++ b/.github/scripts/generate_release_notes.py
@@ -3,7 +3,7 @@
# (C) 2021 spicyjpeg - MPL licensed
import sys, re
-from time import gmtime, strptime
+from time import gmtime, strptime, struct_time
from argparse import ArgumentParser, FileType
## Helpers
@@ -11,14 +11,13 @@ from argparse import ArgumentParser, FileType
VERSION_REGEX = re.compile(r"^(?:refs\/tags\/)?(?:v|ver|version|release)? *(.*)")
def parse_date(date):
+ if isinstance(date, struct_time):
+ return date
+
return strptime(date.strip(), "%Y-%m-%d")
def normalize_version(version):
- match = VERSION_REGEX.match(version.lower())
- if not match:
- raise ValueError(f"invalid version string: {version}")
-
- return match.group(1)
+ return VERSION_REGEX.match(version.lower()).group(1)
## Changelog parser
@@ -50,9 +49,6 @@ def parse_blocks(changelog):
# [ _crap, date, version, body, date, version, body, ... ]
items = BLOCK_REGEX.split(changelog.strip())
- #if items[0].strip():
- #raise RuntimeError("the changelog doesn't start with a valid block")
-
# Iterate over all blocks from bottom to top (i.e. oldest first).
last_version = FIRST_VERSION
@@ -110,51 +106,39 @@ def generate_notes(versions):
def get_args():
parser = ArgumentParser(
- description = "Generates and outputs release notes from a Markdown changelog file.",
- add_help = False
+ description = "Generates and outputs release notes from a Markdown changelog file."
)
-
- tools_group = parser.add_argument_group("Tools")
- tools_group.add_argument(
- "-h", "--help",
- action = "help",
- help = "Show this help message and exits"
- )
-
- files_group = parser.add_argument_group("Files")
- files_group.add_argument(
+ parser.add_argument(
"changelog",
type = FileType("rt"),
help = "Markdown changelog file to parse"
)
- files_group.add_argument(
+ parser.add_argument(
"-o", "--output",
type = FileType("wt"),
default = sys.stdout,
- help = "Where to output release notes (stdout by default)",
+ help = "where to output release notes (stdout by default)",
metavar = "file"
)
-
- filter_group = parser.add_argument_group("Filters")
- filter_group.add_argument(
+ parser.add_argument(
"-v", "--version",
action = "append",
type = str,
- help = "Ignore all changes not belonging to a version (can be specified multiple times)",
+ help = "ignore all changes not belonging to a version (can be specified multiple times)",
metavar = "name"
)
- filter_group.add_argument(
+ parser.add_argument(
"-f", "--from-date",
type = parse_date,
default = parse_date("2000-01-01"),
- help = "Ignore all changes before date",
+ help = "ignore all changes before date",
metavar = "yyyy-mm-dd"
)
- filter_group.add_argument(
+ parser.add_argument(
"-t", "--to-date",
type = parse_date,
default = gmtime(),
- help = "Ignore all changes after date",
+ help = "ignore all changes after date",
metavar = "yyyy-mm-dd"
)