require_relative 'config'

verbose false

task :default do
  puts 'Usage:'
  sh 'rake', '-T'
end

file 'Gemfile.lock' => 'Gemfile' do
  sh 'bundle update'
  touch 'Gemfile.lock'
end

desc 'install dependencies'
task :bundle => 'Gemfile.lock'

desc 'Parse emails'
task :parse => :bundle do
  ruby 'parsemail.rb'
end

desc 'Fetch and parse emails'
task :fetch => :bundle do
  ruby 'parsemail.rb', '--fetch'
end

desc 'create /srv/mail with the appropriate permissions'
file '/srv/mail' do
  begin
    mkdir_p '/srv/mail'

    require 'etc'
    if Etc.getpwent.uid == 0
      user = Etc.getpwnam(Etc.getlogin)
      chown user.uid, user.gid, '/srv/mail'
    end
  rescue Errno::EACCES
    sh 'sudo rake /srv/mail'
  end
end

desc 'download mail from whimsy'
task 'sync' => '/srv/mail' do
  sh 'rsync -av --delete whimsy.apache.org:/srv/mail/ /srv/mail'
end

desc 'Fetch and parse latest month only'
task :fetch1 => :bundle do
  ruby 'parsemail.rb', '--fetch1'
end

desc 'WebServer that provides an interface to explore emails'
task :server => :bundle do
  ENV['RACK_ENV']='development'

  require 'bundler/setup'
  require 'wunderbar'
  module Wunderbar::Listen
    EXCLUDE = [ARCHIVE]
  end

  require 'wunderbar/listen'
end

desc 'remove all parsed YAML files'
task :clean do
  rm_rf Dir["#{ARCHIVE}/*.yml"]
end
