mirror of
https://github.com/Aider-AI/aider.git
synced 2025-06-02 02:34:59 +00:00
Change the output format to YAML and include the date of the second tag in each range.
This commit is contained in:
parent
dba560caf9
commit
074aeb5048
1 changed files with 32 additions and 11 deletions
|
@ -8,6 +8,8 @@ from aider.dump import dump
|
||||||
from operator import itemgetter
|
from operator import itemgetter
|
||||||
import re
|
import re
|
||||||
import semver
|
import semver
|
||||||
|
import yaml
|
||||||
|
from datetime import datetime
|
||||||
|
|
||||||
|
|
||||||
def blame(start_tag, end_tag=None):
|
def blame(start_tag, end_tag=None):
|
||||||
|
@ -33,7 +35,9 @@ def blame(start_tag, end_tag=None):
|
||||||
total_lines = sum(grand_total.values())
|
total_lines = sum(grand_total.values())
|
||||||
aider_percentage = (aider_total / total_lines) * 100 if total_lines > 0 else 0
|
aider_percentage = (aider_total / total_lines) * 100 if total_lines > 0 else 0
|
||||||
|
|
||||||
return all_file_counts, grand_total, total_lines, aider_total, aider_percentage
|
end_date = get_tag_date(end_tag if end_tag else 'HEAD')
|
||||||
|
|
||||||
|
return all_file_counts, grand_total, total_lines, aider_total, aider_percentage, end_date
|
||||||
|
|
||||||
|
|
||||||
def get_all_commit_hashes_between_tags(start_tag, end_tag=None):
|
def get_all_commit_hashes_between_tags(start_tag, end_tag=None):
|
||||||
|
@ -80,21 +84,34 @@ def main():
|
||||||
tags = get_all_tags_since(args.start_tag)
|
tags = get_all_tags_since(args.start_tag)
|
||||||
tags += ['HEAD']
|
tags += ['HEAD']
|
||||||
|
|
||||||
|
results = []
|
||||||
for i in range(len(tags) - 1):
|
for i in range(len(tags) - 1):
|
||||||
start_tag, end_tag = tags[i], tags[i+1]
|
start_tag, end_tag = tags[i], tags[i+1]
|
||||||
_, _, total_lines, aider_total, aider_percentage = blame(start_tag, end_tag)
|
_, _, total_lines, aider_total, aider_percentage, end_date = blame(start_tag, end_tag)
|
||||||
print(f"{start_tag:7} -> {end_tag:7}: Aider wrote {aider_percentage:3.0f}% of the code ({aider_total:3}/{total_lines:3} lines)")
|
results.append({
|
||||||
|
'start_tag': start_tag,
|
||||||
|
'end_tag': end_tag,
|
||||||
|
'end_date': end_date.strftime('%Y-%m-%d'),
|
||||||
|
'aider_percentage': round(aider_percentage, 2),
|
||||||
|
'aider_lines': aider_total,
|
||||||
|
'total_lines': total_lines
|
||||||
|
})
|
||||||
|
print(yaml.dump(results, sort_keys=False))
|
||||||
else:
|
else:
|
||||||
all_file_counts, grand_total, total_lines, aider_total, aider_percentage = blame(args.start_tag, args.end_tag)
|
all_file_counts, grand_total, total_lines, aider_total, aider_percentage, end_date = blame(args.start_tag, args.end_tag)
|
||||||
|
|
||||||
dump(all_file_counts)
|
result = {
|
||||||
|
'start_tag': args.start_tag,
|
||||||
|
'end_tag': args.end_tag or 'HEAD',
|
||||||
|
'end_date': end_date.strftime('%Y-%m-%d'),
|
||||||
|
'file_counts': all_file_counts,
|
||||||
|
'grand_total': {author: count for author, count in sorted(grand_total.items(), key=itemgetter(1), reverse=True)},
|
||||||
|
'total_lines': total_lines,
|
||||||
|
'aider_total': aider_total,
|
||||||
|
'aider_percentage': round(aider_percentage, 2)
|
||||||
|
}
|
||||||
|
|
||||||
print("\nGrand Total:")
|
print(yaml.dump(result, sort_keys=False))
|
||||||
for author, count in sorted(grand_total.items(), key=itemgetter(1), reverse=True):
|
|
||||||
percentage = (count / total_lines) * 100
|
|
||||||
print(f"- {author}: {count} lines ({percentage:.2f}%)")
|
|
||||||
|
|
||||||
print(f"\nAider wrote {aider_percentage:.0f}% of the code in this release ({aider_total}/{total_lines} lines).")
|
|
||||||
|
|
||||||
def get_counts_for_file(start_tag, end_tag, authors, fname):
|
def get_counts_for_file(start_tag, end_tag, authors, fname):
|
||||||
try:
|
try:
|
||||||
|
@ -127,5 +144,9 @@ def get_all_tags_since(start_tag):
|
||||||
]
|
]
|
||||||
return [tag for tag in filtered_tags if tag.endswith('.0')]
|
return [tag for tag in filtered_tags if tag.endswith('.0')]
|
||||||
|
|
||||||
|
def get_tag_date(tag):
|
||||||
|
date_str = run(['git', 'log', '-1', '--format=%ai', tag]).strip()
|
||||||
|
return datetime.strptime(date_str, '%Y-%m-%d %H:%M:%S %z')
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
main()
|
main()
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue