blob: 8fe21b3a5ab289ae4f937afd5c3f7bb4e351bb5e [file] [log] [blame]
#!/usr/bin/perl
# ============================================================
#
# SCRIPT NAME: yna-summary
#
# This script takes in files in the form sent by the
# voter tool final summary Email
#
# e.g
# Issue members200606-20060613-foobar is now closed. The summary is not yet implemented.
#
# Here are the raw collected results -- remember to remove old votes from
# those with duplicate entries before counting them.
#
# [2006/06/13 18:22:30] 0422f389874d7a8ecfd2fabea0a152ed yes
# [2006/06/13 18:23:15] 9c58d57506a17c83b9d4cc8c0ed4a31e abstain
# [2006/06/13 18:28:27] 9db55691a072f88d79968eed8297dc90 no
# [2006/06/13 19:01:13] a6d1332887e40af1dd2405cd2abf1e77 yes
# [2006/06/13 19:22:45] a9472aa4f7df905173acd8fe2d8edcb2 yes
# [2006/06/13 20:42:33] adc9914bb9112d8da4cddd6353e09ef1 abstain
#
# ...
#
# And produces a summary of total votes, the number of
# dups and the vote summaries themselves.
#
# It is very dependent on the format of the Final Tally
# Email that comes from the voter tool and is
# designed to work on the full email message.
#
# This means you can concat all the final tallies
# together in one big file and this tool will
# correctly parse the whole shebang for you.
#
open(INPUT, "$ARGV[0]");
while(<INPUT>) {
chomp;
# Assumes standard format of closed email
if (/Issue ([^-]*)-[^-]*-(\w*) is now closed/) {
$issuename = "$1 - $2";
%votes = ();
$dups{$issuename} = 0;
$yes = 0; $no = 0; $abstain = 0; $total = 0;
next;
}
# [2006/06/13 17:54:23] 4db08a9e058fa8e4742f1f05cd32e409 yes
if (/\[.{19}\]\s([\w\d]{32})\s([a-z]{1,12})/) {
if ($votes{$1} ne "") {
$dups{$issuename}++;
}
$votes{$1} = $2;
next;
}
if (/Current file digests:/) {
foreach $id (keys %votes) {
$total++;
#print "$id, $votes{$id} \n";
if ($votes{$id} eq 'yes') { $yes++; }
if ($votes{$id} eq 'no') { $no++; }
if ($votes{$id} eq 'abstain') { $abstain++; }
}
if ($yes > $no) {
$elected = "(elected)";
} else {
$elected = "(NOT ELECTED)";
}
print "Issue: $issuename: Total: $total ($dups{$issuename}), Yes: $yes, No: $no, Abstain: $abstain $elected\n";
next;
}
}
# ============================================================