#!/usr/bin/env python3 # -*- coding: utf-8 -*- ##### To Do ##### # - handle different keywords/types (what to process/ignore?) # - recognize tags # - sort by tags # - scopes import os # a multidimensional list containing the Changelog log = [] # a multidimensional list containing all commits separated by lines commitHistory = [] # a list of keywords used in the default conventional git (https://www.conventionalcommits.org/en/v1.0.0/) # may later get converted into a dict keywords = ["build", "chore", "ci", "docs", "feat", "fix", "perf", "refactor", "style", "test"] # get the formatted output from git log with additional delimiter for easier splitting stream = os.popen("git log --format=%B%H----DELIMITER----") output = stream.read() output = output.split("----DELIMITER----") del output[-1] # compute every commit for commit in output: # seperate lines wholeCommit = commit.split("\n") # delete empty strings commit = [x for x in wholeCommit if x] # delete long commit message if len(commit) == 3: del commit[1] # put commit into list commitHistory.append(commit) # handle commit types (work in progress) # variant a if commit[0].startswith("feat"): print("Feature recognized!") elif commit[0].startswith("chore"): print("Chore recognized!") # variant b for i in keywords: if commit[0].startswith(i): print(i) # write into logfile for test purpose with open("log.txt", "w") as file: for commit in commitHistory: for line in commit: file.write(line) file.write("\n")