#!/usr/bin/perl

use strict;
use warnings;
use Date::Parse;

my %commiters = (
	'alerios'		=> 0,
	'bottoms'		=> 0,
	'bradley-guest'		=> 0,
	'cavedon-guest'		=> 0,
	'danchev-guest'		=> 0,
	'danweber-guest'	=> 0,
	'elcuco-guest'		=> 0,
	'halls'			=> 0,
	'janakj-guest'		=> 0,
	'jblache'		=> 0,
	'js'			=> 0,
	'jsogo'			=> 0,
	'kaiv-guest'		=> 0,
	'kilian'		=> 0,
	'lmamane'		=> 0,
	'maniac-guest'		=> 0,
	'manty'			=> 0,
	'matthewcraig-guest'	=> 0,
	'mikma-guest'		=> 0,
	'mnencia'		=> 0,
	'msp'			=> 0,
	'paravoid'		=> 0,
	'rmayorga-guest'	=> 0,
	'ron'			=> 0,
	'santiago'		=> 0,
	'sjr'			=> 0,
	'smimram'		=> 0,
	'tzafrir-guest'		=> 0,
);
my %commits;

my %dd = (
	'kk-guest'		=> 'kilian',
	'alerios-guest'		=> 'alerios',
	'santiago-guest'	=> 'santiago',
);

while (<>) {
	next unless /^r\d+ \| (.*) \| (.*) \(.*\) \| .* lines?/;
	my ($name, $date) = ($1, str2time($2));
	$name = $dd{$name} if exists $dd{$name};

	$commits{$name} = 0 unless exists $commits{$name};
	$commits{$name}++;

	if (!defined $commiters{$name} ||
	    $commiters{$name} < $date) {
		$commiters{$name} = $date;
	}
}

sub indented($$) {
	my ($p, $c) = (shift, shift);
	return $p, ' ' x ($c - length $p);
}

print indented('Commiter', 21), indented('Last commit date', 25), indented('Commits', 0), "\n";
print '-' x 20, ' ', '-' x 24, ' ', '-------', "\n";

#foreach my $name (sort { $commits{$b} <=> $commits{$a} } keys %commiters) {
foreach my $name (sort { $commiters{$b} <=> $commiters{$a} } keys %commiters) {
	my $date = gmtime($commiters{$name});
	$date = 'Never' if $commiters{$name} == 0;
	print indented($name, 21), $date;
	print " ", $commits{$name}
		if defined $commits{$name};
	print "\n";
}

my $total = 0;
$total += $_ foreach (values %commits);

print indented('Total', 46), $total, "\n";
