#
# Copyright (c) 2024, Arm Limited and Contributors. All rights reserved.
#
# SPDX-License-Identifier: BSD-3-Clause
#
# This script is used to account for differences between change log format
# produced by NodeJS module "standard-version" and format actually used
# by the TF-A LTS project.
#
import sys
import re


TAIL_RE = r"\(https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/\+/refs/tags/.+lts.+\) \(\d+-\d+-\d+\)$"
PREFIX_RE = r"^## \[lts-[0-9.]+\]" + TAIL_RE
NOPREFIX_RE = r"^###? \[[0-9.]+\]" + TAIL_RE


def main():
    with open(sys.argv[2]) as f:
        for l in f:
            if sys.argv[1] == "remove-prefix":
                if re.match(PREFIX_RE, l):
                    l = re.sub(r"\[lts-([0-9.]+)\]", r"[\1]", l)
            elif sys.argv[1] == "add-prefix":
                if re.match(NOPREFIX_RE, l):
                    l = re.sub(r"\[([0-9.]+)\]", r"[lts-\1]", l)
                    # stadard-version generates "###", while change-log.md uses "##"
                    l = l.replace("### ", "## ")
            else:
                assert sys.argv[1], "'add-prefix' or 'remove-prefix' expected"
            sys.stdout.write(l)


if __name__ == "__main__":
    main()
