module Luban::Deployment::Command::Tasks::Crontab

Constants

Actions

Public Instance Methods

cronjob(**job) click to toggle source
# File lib/luban/deployment/cli/command.rb, line 206
def cronjob(**job)
  validate_cronjob(job)
  cronjobs << job
end
cronjobs() click to toggle source
# File lib/luban/deployment/cli/command.rb, line 202
def cronjobs; @cronjobs ||= []; end
crontab_tasks() click to toggle source
# File lib/luban/deployment/cli/command.rb, line 211
def crontab_tasks; commands[:conjobs].commands; end
has_cronjobs?() click to toggle source
# File lib/luban/deployment/cli/command.rb, line 204
def has_cronjobs?; !cronjobs.empty?; end

Protected Instance Methods

assign_cronjob(roles: luban_roles, hosts: nil, **job) click to toggle source
# File lib/luban/deployment/cli/command.rb, line 231
def assign_cronjob(roles: luban_roles, hosts: nil, **job)
  roles = Array(roles)
  hosts = Array(hosts)
  servers = select_servers(roles, hosts)
  servers.each { |s| server(s, cronjob: job) }
end
assign_cronjobs() click to toggle source
# File lib/luban/deployment/cli/command.rb, line 227
def assign_cronjobs
  cronjobs.each { |job| assign_cronjob(**job) }
end
setup_crontab_tasks() click to toggle source
# File lib/luban/deployment/cli/command.rb, line 238
def setup_crontab_tasks
  command :cronjobs do
    desc "Run crontab tasks"

    task :update do
      desc 'Update cron jobs'
      action! :update_cronjobs
    end

    task :list do
      desc 'List cron jobs'
      switch :all, "List all cron jobs"
      action! :list_cronjobs
    end
  end
end
validate_cronjob(job) click to toggle source
# File lib/luban/deployment/cli/command.rb, line 215
def validate_cronjob(job)
  if job[:command].nil?
    abort "Aborted! Cron job command is MISSING."
  end
  if job[:schedule].nil?
    abort "Aborted! Cron job schedule is MISSING for command: #{job[:command]}"
  end
  if cronjobs.any? { |j| j[:command] == job[:command] }
    abort "Aborted! Duplicate command is FOUND: #{job[:command]}"
  end
end