class Locd::Agent::Job

A user-defined agent that runs periodically to perform a task.

Public Class Methods

create_plist_data(cmd_template:, label:, workdir:, start_interval:, log_path: nil, keep_alive: false, run_at_load: false, **extras) click to toggle source

Create the `launchd` property list data for a new {Locd::Agent::Site}, which has an additional `port:` keyword versus {Locd::Agent.create_plist_data}.

@param cmd_template (see Locd::Agent.create_plist_data) @param label (see Locd::Agent.create_plist_data) @param workdir (see Locd::Agent.create_plist_data) @param log_path (see Locd::Agent.create_plist_data) @param keep_alive (see Locd::Agent.create_plist_data) @param run_at_load (see Locd::Agent.create_plist_data)

@param [Fixnum | Hash] start_interval:

How often to start the job:

1.  {Fixnum} - Run about every X number of seconds (positive integer).
2.  {Hash}

@return (see Locd::Agent.create_plist_data)

@example Run a job about every minute

Locd::Agent::Job.create_plist_date \
  cmd_template:     'myexe do-some-job',
  label:            'myexe.do-some-job',
  workdir:          '~',
  start_interval:   60

@example Run a job every hour, on the hour

Locd::Agent::Job.create_plist_date \
  cmd_template:     'myexe do-some-job',
  label:            'myexe.do-some-job',
  workdir:          '~',
  start_interval:   {
                      minute: 0,
                    }
Calls superclass method
# File lib/locd/agent/job.rb, line 97
def self.create_plist_data  cmd_template:,
                            label:,
                            workdir:,
                            start_interval:,
                            log_path: nil,
                            keep_alive: false,
                            run_at_load: false,
                            **extras
  
  plist_data = super  cmd_template: cmd_template,
                      label: label,
                      workdir: workdir,
                      log_path: log_path,
                      keep_alive: keep_alive,
                      run_at_load: run_at_load,
                      **extras
  
  start_interval_data = t.match start_interval,
    t.pos_int,
      { "StartInterval" => start_interval },
    
    Types.start_calendar_interval,
      ->( interval ) {
        { 'StartCalendarInterval' =>
            interval.map { |key, value| [key.to_s.capitalize, value] }.to_h }
      },
    
    Types.start_calendar_intervals,
      ->( intervals ) {
        intervals.map { |interval|
          interval.map { |key, value| [key.to_s.capitalize, value] }.to_h
        }
      }
  
  plist_data.merge start_interval_data
end
plist?(plist) click to toggle source

@todo Document plist? method.

@param [type] arg_name

@todo Add name param description.

@return [return_type]

@todo Document return value.
Calls superclass method Locd::Agent::plist?
# File lib/locd/agent/job.rb, line 54
def self.plist? plist
  super( plist ) && ( plist.key?( 'StartInterval' ) ||
                      plist.key?( 'StartCalendarInterval' ) )
end