mirror of
https://github.com/Llewellynvdm/conky.git
synced 2025-01-16 04:02:15 +00:00
30b22b253e
* Add blame ignore file * Add a small utility script in extras to aid in maintainence of the file Signed-off-by: Tin Švagelj <tin.svagelj@live.com>
81 lines
2.2 KiB
Python
Executable File
81 lines
2.2 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
|
|
import subprocess
|
|
|
|
def get_first_number(s):
|
|
number = ""
|
|
found_digit = False
|
|
|
|
for char in s:
|
|
if char.isdigit():
|
|
number += char
|
|
found_digit = True
|
|
elif found_digit:
|
|
break
|
|
|
|
return int(number) if number else None
|
|
|
|
|
|
def git_log():
|
|
entries = []
|
|
try:
|
|
result = subprocess.run(
|
|
["git", "log", "--no-merges", "--shortstat", "--pretty=format:%H %n %s"],
|
|
stdout=subprocess.PIPE,
|
|
stderr=subprocess.PIPE,
|
|
text=True,
|
|
check=True,
|
|
)
|
|
entries = result.stdout.split("\n\n")
|
|
except subprocess.CalledProcessError as e:
|
|
print(f"Error running git command: {e.stderr}")
|
|
return []
|
|
|
|
commits = []
|
|
for line in entries:
|
|
info = line.split("\n")
|
|
changes = info[2].split(",")
|
|
files_changed = get_first_number(changes[0])
|
|
insertions = 0
|
|
deletions = 0
|
|
if len(changes) > 1:
|
|
if "insertions" in changes[1]:
|
|
insertions = get_first_number(changes[1])
|
|
elif "deletions" in changes[1]:
|
|
deletions = get_first_number(changes[1])
|
|
if len(changes) > 2:
|
|
if "insertions" in changes[2]:
|
|
insertions = get_first_number(changes[2])
|
|
elif "deletions" in changes[2]:
|
|
deletions = get_first_number(changes[2])
|
|
commit = {
|
|
"hash": info[0].strip(),
|
|
"message": info[1].strip(),
|
|
"changes": {
|
|
"files": files_changed,
|
|
"insertions": insertions,
|
|
"deletions": deletions,
|
|
},
|
|
}
|
|
commits.append(commit)
|
|
|
|
return commits
|
|
|
|
def main():
|
|
log = git_log()
|
|
if len(log) == 0:
|
|
return
|
|
|
|
large_changes = sorted(log, key=lambda it: it["changes"]["insertions"] + it["changes"]["deletions"], reverse=True)
|
|
|
|
print(f"{'Hash':41} {'Insertions':11} {'Deletions':11} {'Message'}")
|
|
print("-" * 90)
|
|
for commit in large_changes:
|
|
print(
|
|
f"{commit['hash']:41} {commit["changes"]['insertions']:11} {commit["changes"]['deletions']:11} {commit['message']}"
|
|
)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|