#!/usr/bin/env ruby
# Analyze proxies file and output data to remind proxies of IRC attendance lines
# TODO Add function to email proxies with their info
# TODO Add function to cross-check irc log that all proxy/attendee were marked

$LOAD_PATH.unshift '/srv/whimsy/lib'
require 'whimsy/asf'
require 'mail'

MEETINGS = ASF::SVN['Meetings']

# Get IRC attendance copy/paste lines for all proxies at a meeting
# @param meeting dir name of current meeting
# @return reminders {"proxy@apache.org" => ["IRC line", ...]}
# @see foundation/Meetings/*.rb for other scripts that deal with
#   IRC log parsing, attendance marking, and proxy handling
def reminder_lines(meeting = File.basename(Dir[File.join(MEETINGS, '2*')].max))
  lines = IO.read(File.join(MEETINGS, meeting, 'proxies'))
  proxylist = lines.scan(/\s\s(.{25})(.*?)\((.*?)\)/).map { |l| [l[0].strip, l[1].strip, l[2]]} # [["Shane Curcuru    ", "David Fisher ", "wave"], ...]
  copyproxy = Hash.new{|h,k| h[k] = [] }
  proxylist.each do |arr|
    copyproxy[arr[0]] << "#{arr[2].ljust(12)} | #{arr[1].strip} (proxy)"
  end
  copyproxy.delete('<name>')
  reminders = {}
  copyproxy.each do |nam, proxies|
    user = ASF::Person.list("(cn=#{nam})")
    if user.length == 1 # Copy to new array with their email instead of cn
      reminders[user[0].mail[0]] = ["#{user[0].id.ljust(12)} | #{user[0].cn}"]
      proxies.each do |l|
        reminders[user[0].mail[0]] << l
      end
    else
      # "Bogus: ASF::Person.list(#{nam}) not found, skipped!"
    end
  end
  return reminders
end

#### Main method - TODO needs to be integrated into meeting process
puts 'START: reminder_lines()'
p = reminder_lines
puts p

