Module: Wheneverd::Systemd::CronParser

Defined in:
lib/wheneverd/systemd/cron_parser.rb,
lib/wheneverd/systemd/cron_parser/dow_parser.rb,
lib/wheneverd/systemd/cron_parser/field_parser.rb

Overview

Converts 5-field cron expressions into systemd OnCalendar= specs.

Uses FieldParser for parsing numeric fields (minute, hour, day-of-month, month) and DowParser for day-of-week parsing and formatting.

Defined Under Namespace

Modules: DowParser, FieldParser Classes: ParsedFields

Constant Summary collapse

MONTH_NAMES =
{
  "jan" => 1,
  "feb" => 2,
  "mar" => 3,
  "apr" => 4,
  "may" => 5,
  "jun" => 6,
  "jul" => 7,
  "aug" => 8,
  "sep" => 9,
  "oct" => 10,
  "nov" => 11,
  "dec" => 12
}.freeze

Class Method Summary collapse

Class Method Details

.to_on_calendar(cron_5_fields) ⇒ String

Returns systemd OnCalendar= value (only when cron translates to a single value).

Parameters:

  • cron_5_fields (String)

Returns:

  • (String)

    systemd OnCalendar= value (only when cron translates to a single value)

Raises:



42
43
44
45
46
47
48
49
50
# File 'lib/wheneverd/systemd/cron_parser.rb', line 42

def self.to_on_calendar(cron_5_fields)
  values = to_on_calendar_values(cron_5_fields)
  return values.fetch(0) if values.length == 1

  message =
    "Unsupported cron #{cron_5_fields.to_s.strip.inspect}: " \
    "requires multiple OnCalendar values"
  raise UnsupportedCronError, message
end

.to_on_calendar_values(cron_5_fields) ⇒ Array<String>

Returns systemd OnCalendar= values.

Parameters:

  • cron_5_fields (String)

Returns:

  • (Array<String>)

    systemd OnCalendar= values

Raises:



31
32
33
34
35
36
37
# File 'lib/wheneverd/systemd/cron_parser.rb', line 31

def self.to_on_calendar_values(cron_5_fields)
  input = cron_5_fields.to_s.strip
  fields = split_fields(input)

  parsed = parse_all_fields(fields, input)
  format_on_calendar_values(parsed)
end