1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
|
# -*- coding: utf-8 -*-
import argparse
import os
import pickle
from board import DynamicFlyer
from repository import RepositoryChecker
if __name__ == '__main__':
parser = argparse.ArgumentParser()
parser.add_argument('--repo', help='Set the Git repository to process', type=str, required=True)
parser.add_argument('--year', help='Set the year to pay attention to', type=int, required=True)
parser.add_argument('--header', help='Define the main title of the picture', type=str, required=True)
parser.add_argument('--footer', help='Define a conclusion for the picture', type=str, required=True)
parser.add_argument('--output', help='Set the output filename', type=str, required=True)
args = parser.parse_args()
cache = args.repo + '.pickle'
if os.path.isfile(cache):
checker = pickle.load(open(cache, 'rb'))
else:
checker = RepositoryChecker(args.repo, args.year)
checker.process()
pickle.dump(checker, open(cache, 'wb'))
# Colors
red = (1.0, 0.353, 0.165)
blue = (0.047, 0.365, 0.533)
green = (0.118, 0.71, 0.392)
grey = (0.6, 0.6, 0.6)
# Draw now!
flyer = DynamicFlyer(250)
flyer.print_header(args.header)
flyer.render_commit_timeline(checker.get('start'), checker.get('end'), checker.get('timeline'), False, blue)
# Code
data = {
'Insertions' : (checker.get('insertions'), green),
'Deletions' : (checker.get('deletions'), red)
}
flyer.render_pie('Code', data)
print('[i] Code:', checker.get('insertions'), checker.get('deletions'))
# Files
data = {
'Added' : (checker.get('added'), green),
'Removed' : (checker.get('removed'), red)
}
flyer.render_pie('Files', data)
print('[i] Files:', checker.get('added'), checker.get('removed'))
# Languages
used = checker.get('last_metrics').get_most_used(4)
data = {}
colors = (green, red, blue, grey)
i = 0
for v, n in used:
data[n] = (v, colors[i])
i += 1
flyer.render_pie('Languages', data)
# TODO / FIXME
data = {
'Old' : (checker.get('old'), grey),
'New' : (checker.get('new'), red),
'Killed' : (checker.get('killed'), green)
}
flyer.render_pie('TODO / FIXME', data)
print('[i] TODO / FIXME:', checker.get('old'), checker.get('new'), checker.get('killed'))
# Conclusion
flyer.print_footer(args.footer)
flyer.save(args.output)
|