blob: 72b46a14118b8c5112f93b1deebd790be40908a4 [file] [log] [blame]
#
# Scan board@ for feedback threads. Return number of responses in each.
#
require 'date'
maildir = '/srv/mail/board/'
start = maildir + (Date.today - 365).strftime("%Y%m")
responses = {}
Dir[maildir + '*'].sort.each do |dir|
next unless dir >= start
Dir[dir.untaint + '/*'].each do |msg|
text = File.open(msg.untaint, 'rb') {|file| file.read}
subject = text[/^Subject: .*/]
next unless subject and subject =~ /Board feedback on .* report/
date, pmc = subject.scan(/Board feedback on ([-\d]+) (.*) report/).first
next unless date
responses[date] ||= Hash.new {|hash, key| hash[key] = 0}
responses[date][pmc] += 1
end
end
responses.each {|key, value| responses[key] = responses[key].sort.to_h}
responses.sort.to_h