summaryrefslogtreecommitdiff
path: root/gas.py
blob: ffb4ba6aab34f75d0ac7614cfebbfeaed66a5bd3 (plain)
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)