#!/usr/local/bin/ruby
# Copyright (c) 2000 Brian Fundakowski Feldman, All rights reserved.

committers = Hash.new(0)
namemaxlen = "Committer".length
locmaxlen = "Lines".length

$stdin.grep(/^[^(]*\(([^[:space:]]*)/) {committers[$1] += 1}

if committers.length == 0
	print "No input.\n"
	exit 1
end

committers = committers.sort {|a, b| [b[1], a[0]] <=> [a[1], b[0]]}

committers.each {|c|
	namelen = c[0].length
	namemaxlen = namelen if namelen > namemaxlen
}

loclen = (committers[0][1]).to_s.length 
locmaxlen = loclen if loclen > locmaxlen
namemaxlen += 5

cfmt = "%-#{namemaxlen}.#{namemaxlen}s%#{locmaxlen}.#{locmaxlen}s\n"
if $stdout.isatty
	pager = open("| #{ENV['PAGER'] || 'more'}", 'w')
else
	pager = $stdout
end
pager.printf(cfmt, "Committer", "Lines")
pager.printf(cfmt, "-" * "Committer".length, "-" * "Lines".length)
pager.print "\n"
committers.each {|c|
	pager.printf(cfmt, c[0], c[1])
}
pager.close
