# -*- 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)