namespace :pumamanager do

set_default :puma_role,         -> { user }
set_default :puma_app_list,     "/etc/puma.conf"
set_default :upstart_dir,       "/etc/init"

desc 'Setup puma-manager'
task :setup => :environment do
  queue %(echo "-----> Setup the puma-manager")

  puma_conf_content = erb(puma_conf_template).gsub(/(["$])/){"\\#{$1}"}
  puma_conf_temp = "#{deploy_to}/#{shared_path}/puma.conf"
  queue! %[
    if [ -e '#{upstart_dir}/puma.conf' ]; then
      echo '#{upstart_dir}/puma.conf is existed!';
    else
      echo "#{puma_conf_content}" > #{puma_conf_temp}
      sudo cp #{puma_conf_temp} #{upstart_dir}
    fi
  ]

  puma_manager_conf_content = erb(puma_manager_conf_template).gsub(/(["$])/){"\\#{$1}"}
  puma_manager_conf_temp = "#{deploy_to}/#{shared_path}/puma-manager.conf"
  queue %[
    if [ -e '#{upstart_dir}/puma_manager.conf' ]; then
      echo '#{upstart_dir}/puma_manager.conf is existed!';
    else
      echo "#{puma_manager_conf_content}" > #{puma_manager_conf_temp}
      sudo cp #{puma_manager_conf_temp} #{upstart_dir}
    fi
  ]

  app_path = "#{deploy_to}/current"
  queue! %[
    if ! [ -e '#{puma_app_list}' ]; then
      sudo touch #{puma_app_list}
      sudo chmod o+rw #{puma_app_list}
    fi

    if ! grep -q #{app_path} #{puma_app_list}; then
      sudo echo #{app_path} >> #{puma_app_list}
    fi
  ]
end

task :start => :environment do
  queue %(sudo start puma-manager)
end

task :stop => :environment do
  queue %(sudo stop puma-manager)
end

task :restart => :environment do
  queue %(sudo restart puma-manager)
end

private
def puma_conf_template
  File.expand_path('../puma.conf.erb', __FILE__)
end

def puma_manager_conf_template
  File.expand_path('../puma-manager.conf.erb', __FILE__)
end

end