# frozen_string_literal: true plugin = self namespace :solid_queue do # rubocop:disable Metrics desc "Generate solid_queue systemd service" task :generate do on roles(fetch(:solid_queue_role)) do |role| service_file = File.expand_path("../../templates/solid_queue.service.erb", __FILE__) erb = File.read(service_file) File.write "solid_queue.service", ERB.new(erb, trim_mode: "-").result(binding) end end desc "Install solid_queue systemd service" task :install do on roles(fetch(:solid_queue_role)) do |role| execute :mkdir, "-p", fetch(:solid_queue_systemd_conf_dir) service_file = File.expand_path("../../templates/solid_queue.service.erb", __FILE__) erb = File.read(service_file) file = StringIO.new(ERB.new(erb, trim_mode: "-").result(binding)) systemd_path = fetch(:solid_queue_systemd_conf_dir) path = "#{systemd_path}/#{fetch(:solid_queue_service_unit_name)}.service" execute :mkdir, "-p", systemd_path upload! file, path # Reload systemd plugin.execute_systemd("daemon-reload") invoke "solid_queue:enable" end end desc "Uninstall solid_queue systemd service" task :uninstall do invoke "solid_queue:disable" on roles(fetch(:solid_queue_role)) do |role| systemd_path = fetch(:solid_queue_systemd_conf_dir) execute :rm, "-f", "#{systemd_path}/#{fetch(:solid_queue_service_unit_name)}*" plugin.execute_systemd("daemon-reload") end end desc "Enable solid_queue systemd service" task :enable do on roles(fetch(:solid_queue_role)) do plugin.execute_systemd("enable", fetch(:solid_queue_service_unit_name)) end end desc "Disable solid_queue systemd service" task :disable do on roles(fetch(:solid_queue_role)) do plugin.execute_systemd("disable", fetch(:solid_queue_service_unit_name)) end end desc "Quiet solid_queue (start graceful termination)" task :quiet do on roles(:app) do plugin.execute_systemd("kill", "-s", "SIGTERM", fetch(:solid_queue_service_unit_name), raise_on_non_zero_exit: false) end end desc "Start solid_queue service via systemd" task :start do on roles(fetch(:solid_queue_role)) do plugin.execute_systemd("start", fetch(:solid_queue_service_unit_name)) end end desc "Stop solid_queue service via systemd" task :stop do on roles(fetch(:solid_queue_role)) do plugin.execute_systemd("stop", fetch(:solid_queue_service_unit_name)) end end desc "Restart solid_queue service via systemd" task :restart do on roles(fetch(:solid_queue_role)) do plugin.execute_systemd("restart", fetch(:solid_queue_service_unit_name)) end end desc "Reload solid_queue service via systemd" task :reload do on roles(fetch(:solid_queue_role)) do plugin.execute_systemd("reload", fetch(:solid_queue_service_unit_name)) end end desc "Get solid_queue service status via systemd" task :status do on roles(fetch(:solid_queue_role)) do plugin.execute_systemd("status", fetch(:solid_queue_service_unit_name)) end end end