namespace :monit do

desc 'Install Monit'
task :install do
  on roles(:app) do
    sudo "apt-get -y install monit"
  end
end

desc 'Setup all Monit configuration'
task :setup do
  on roles(:app) do
    monit_config 'monitrc', '/etc/monit/monitrc'
    invoke 'monit:nginx'
    invoke 'monit:postgresql'
    invoke 'monit:unicorn'
    invoke 'monit:syntax'
    invoke 'monit:reload'
  end
end

task :nginx do
  on roles(:app) do
    monit_config "nginx"
  end
end
task :postgresql do
  on roles(:app) do
    monit_config "postgresql"
  end
end
task :unicorn do
  on roles(:app) do
    monit_config "unicorn"
  end
end

%w[start stop restart syntax reload].each do |command|
  desc "Run Monit #{command} script"
  task command do
    on roles(:app) do
      sudo "service monit #{command}"
    end
  end
end

end

def monit_config(name, destination = nil)

destination ||= "/etc/monit/conf.d/#{name}.conf"
template "monit/#{name}.erb", "/tmp/monit_#{name}"
sudo "mv /tmp/monit_#{name} #{destination}"
sudo "chown root #{destination}"
sudo "chmod 600 #{destination}"

end