diff --git a/Scripts/changelog_generator.py b/Scripts/changelog_generator.py new file mode 100755 index 000000000..c5f8c1ffd --- /dev/null +++ b/Scripts/changelog_generator.py @@ -0,0 +1,47 @@ +#!/bin/env python3 +import sys + +import fileinput +import re + +Meta = { } +for line in sys.stdin.readlines(): + if detailed := re.findall("^([A-Za-z0-9]+)/([A-Za-z0-9]+):(.+)$", line): + detailed = detailed[0] + meta = detailed[0].strip() + "/" + detailed[1].strip() + if meta not in Meta: + Meta[meta] = [] + Meta[meta].append(detailed[2].strip()) + elif category := re.findall("(^[A-Za-z0-9]+):(.+)$", line): + category = category[0] + if category[0].strip() not in Meta: + Meta[category[0].strip()] = [] + Meta[category[0].strip()].append(category[1].strip()) + else: + if "_Misc" not in Meta: + Meta["_Misc"] = [] + Meta["_Misc"].append(line.strip()) + +print("# " + sys.argv[1]) + +Category = "" +Tag = "" +for item in sorted(Meta.items()): + if item[0] == "_Misc": + tag = "Misc" + else: + tag = item[0] + + category = tag.split("/")[0] + if category != Category: + Category = category + Tag = "" + print("") + print("## " + category) + if Tag != tag and tag != category: + Tag = tag + print("") + print("### " + tag.split("/")[1]) + + for change in item[1]: + print("- " + change) diff --git a/Scripts/generate_changelog.sh b/Scripts/generate_changelog.sh new file mode 100755 index 000000000..49cb400a4 --- /dev/null +++ b/Scripts/generate_changelog.sh @@ -0,0 +1,7 @@ +#!/bin/env bash +if [ "$#" -ne 2 ]; +then +echo "$0: " +exit -1 +fi +git log "$1..HEAD" --pretty="%b (%h)" --abbrev-commit --merges | Scripts/changelog_generator.py "$2"