diff --git a/gitlab_release/python-module/cz_nfc/cz_nfc.py b/gitlab_release/python-module/cz_nfc/cz_nfc.py index bf55046..e0c77c8 100755 --- a/gitlab_release/python-module/cz_nfc/cz_nfc.py +++ b/gitlab_release/python-module/cz_nfc/cz_nfc.py @@ -2,6 +2,8 @@ #-*- coding: utf-8 -*- import os +import git as Git +import re from commitizen import git from commitizen.cz.base import BaseCommitizen @@ -28,8 +30,50 @@ class nfc_cz(BaseCommitizen): def changelog_message_builder_hook(self, parsed_message: dict, commit: git.GitCommit) -> dict: rev = commit.rev rev_short = str(rev)[0:8] + repo = Git.Repo(os.getcwd()) + + tree = list(repo.iter_commits(repo.active_branch)) + + footer_references = '' + for item in tree: + + if item.message.count("\n") > 2 and str(item).lower() == rev.lower(): + footer_line = item.message.split("\n") + footer_line = footer_line[(len(footer_line)-1)] + footer = re.findall(r"([\!|\#][0-9]+)", str(item.message)) + + try: + + for reference in footer: + + if '#' in reference: + + footer_references += ' ' + str( + '[{0}]({1}/-/issues/{2})'.format( + reference, + os.environ['CI_PROJECT_URL'], + reference.replace('#', '') + ) + ) + + if '!' in reference: + footer_references += ' ' + str( + '[{0}]({1}/-/merge_requests/{2})'.format( + reference, + os.environ['CI_PROJECT_URL'], + reference.replace('!', '') + ) + ) + + except Exception: + pass + + if footer_references != '': + footer_references = ' [' + footer_references + ' ]' + m = parsed_message["message"] - parsed_message["message"] = f"[{rev_short}](" + os.environ['CI_PROJECT_URL'] + f"/-/commit/{rev}) - {m}" + parsed_message["message"] = f"[{rev_short}](" + os.environ['CI_PROJECT_URL'] + f"/-/commit/{rev}) - {m}" + footer_references + return parsed_message diff --git a/gitlab_release/python-module/cz_nfc/setup.py b/gitlab_release/python-module/cz_nfc/setup.py index a147e06..15d0c43 100644 --- a/gitlab_release/python-module/cz_nfc/setup.py +++ b/gitlab_release/python-module/cz_nfc/setup.py @@ -6,5 +6,5 @@ setup( py_modules=['cz_nfc'], license='MIT', long_description='this is a long description', - install_requires=['commitizen'] + install_requires=['commitizen', 'gitpython'] )