namespace :deploy do

namespace :monit do
  desc "Reloads monit service"
  task :reload do
    on roles :app do
      execute "sudo monit reload"
    end
  end

  desc "Starts applications"
  task :start do
    if ENV['DAEMONS'].to_s != ''
      on roles :app do
        ENV['DAEMONS'].split(',').each do |daemon|
          execute "sudo monit start #{fetch(:application)}-#{daemon}"
        end
      end
    else
      execute "sudo monit -g #{fetch(:application)} start all"
    end
  end

  desc "Stops applications"
  task :stop do
    if ENV['DAEMONS'].to_s != ''
      on roles :app do
        ENV['DAEMONS'].split(',').each do |daemon|
          execute "sudo monit stop #{fetch(:application)}-#{daemon}"
        end
      end
    else
      execute "sudo monit -g #{fetch(:application)} stop all"
    end
  end

  desc "Restarts applications"
  task :restart do
    if ENV['DAEMONS'].to_s != ''
      on roles :app do
        ENV['DAEMONS'].split(',').each do |daemon|
          execute "sudo monit restart #{fetch(:application)}-#{daemon}"
        end
      end
    else
      execute "sudo monit -g #{fetch(:application)} restart all"
    end
  end

  desc "Starts monitoring applications"
  task :monitor do
    if ENV['DAEMONS'].to_s != ''
      on roles :app do
        ENV['DAEMONS'].split(',').each do |daemon|
          execute "sudo monit monitor #{fetch(:application)}-#{daemon}"
        end
      end
    else
      execute "sudo monit -g #{fetch(:application)} monitor all"
    end
  end

  desc "Stops monitoring applications"
  task :unmonitor do
    if ENV['DAEMONS'].to_s != ''
      on roles :app do
        ENV['DAEMONS'].split(',').each do |daemon|
          execute "sudo monit unmonitor #{fetch(:application)}-#{daemon}"
        end
      end
    else
      execute "sudo monit -g #{fetch(:application)} unmonitor all"
    end
  end
end

end