From 56795e887def81307eb5710ce2ac82cc269c307b Mon Sep 17 00:00:00 2001 From: Daniel Fütterer <df89@outlook.com> Date: Thu, 18 Feb 2021 13:35:36 +0100 Subject: [PATCH] feat: Handling of non-conventional commits --- oop_changelog.py | 39 ++++++++++++++++++++++++++++++++------- 1 files changed, 32 insertions(+), 7 deletions(-) diff --git a/oop_changelog.py b/oop_changelog.py index a7d7637..4b0b8b6 100644 --- a/oop_changelog.py +++ b/oop_changelog.py @@ -1,5 +1,10 @@ import os.path +## To Do +# - Breaking Changes +# - Merge Commits +# - Error Handling + def getSeparatedGitLog(repo): try: stream = os.popen("git -C {} log --format=%B--SEP--%H--SEP--%d--END--".format(repo)) @@ -34,7 +39,13 @@ self.setCommitType() def setSubjectAndBody(self): - subStart = self.completeMessage.index(": ")+2 + try: + subStart = self.completeMessage.index(": ")+2 + except: + try: + subStart = self.completeMessage.index("\n") + except: + subStart = 0 try: subEnd = self.completeMessage.index("\n") except: @@ -58,6 +69,11 @@ if (self.completeMessage.startswith((commitType + ": "))) or (self.completeMessage.startswith((commitType + "("))): self.commitType = commitType break + else: + self.commitType = "nonconform" + + def getCommitMessageWithType(self): + return self.commitType + ": " + self.subject class CommitTag: @@ -103,6 +119,9 @@ self.body = CommitBody(rawCommit.body) self.tag = CommitTag(rawCommit.tag) self.hash = rawCommit.hash + + def appendShortHash(self): + return " (" + self.hash[:6] + ")" @@ -131,7 +150,7 @@ fileTemplate = ["# Changelog"] for tag in taggedHistory: # A Dictionairy to store grouped commits - commitsByType = {"Fixes":[], "Features":[], "Other":[]} + commitsByType = {"Fixes":[], "Features":[], "Other":[], "Nonconform":[]} commitsByScope = {} # If latest commit has no tag: @@ -149,30 +168,36 @@ else: commitsByScope[commit.body.scope].append(commit) for scope in commitsByScope: - fileTemplate.append("\n### Scope: " + scope) + fileTemplate.append("### Scope: " + scope) for commit in commitsByScope[scope]: - fileTemplate.append("\n- " + commit.body.commitType + ": " + commit.body.subject + " (" + commit.hash[:6] + ")") + fileTemplate.append("- " + commit.body.getCommitMessageWithType() + commit.appendShortHash()) else: # Sorting in predifend groups if commit.body.commitType == CommitBody.commitTypes[5]: # fix commitsByType["Fixes"].append(commit) elif commit.body.commitType == CommitBody.commitTypes[4]: # feat commitsByType["Features"].append(commit) + elif commit.body.commitType == "nonconform": + commitsByType["Nonconform"].append(commit) else: commitsByType["Other"].append(commit) if len(commitsByType["Features"]) != 0: fileTemplate.append("### Features") for feature in commitsByType["Features"]: - fileTemplate.append("- " + feature.body.subject + " (" + feature.hash[:6] + ")") + fileTemplate.append("- " + feature.body.subject + feature.appendShortHash()) if len(commitsByType["Fixes"]) != 0: fileTemplate.append("### Fixes") for fix in commitsByType["Fixes"]: - fileTemplate.append("- " + fix.body.subject + " (" + fix.hash[:6] + ")") + fileTemplate.append("- " + fix.body.subject + fix.appendShortHash()) if len(commitsByType["Other"]) != 0: fileTemplate.append("### Other") for other in commitsByType["Other"]: - fileTemplate.append("\n- " + other.body.commitType + ": " + other.body.subject + " (" + other.hash[:6] + ")") + fileTemplate.append("- " + other.body.getCommitMessageWithType() + other.appendShortHash()) + if len(commitsByType["Nonconform"]) != 0: + fileTemplate.append("### Non-conventional") + for nonconform in commitsByType["Nonconform"]: + fileTemplate.append("- " + nonconform.body.subject + nonconform.appendShortHash()) # write into changelog -- Gitblit v1.9.1