cron

package
v2.10.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 22, 2024 License: AGPL-3.0 Imports: 5 Imported by: 0

Documentation

Overview

package schedule provides utilities for managing template and workspace autostart and autostop schedules. This includes utilities for parsing and deserializing cron-style expressions.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Schedule

type Schedule struct {
	// contains filtered or unexported fields
}

Schedule represents a cron schedule. It's essentially a wrapper for robfig/cron/v3 that has additional convenience methods.

func Daily

func Daily(raw string) (*Schedule, error)

Daily parses a Schedule from spec scoped to a recurring daily event. Spec consists of the following space-delimited fields, in the following order: - timezone e.g. CRON_TZ=US/Central (optional) - minutes of hour e.g. 30 (required) - hour of day e.g. 9 (required) - day of month (must be *) - month (must be *) - day of week (must be *)

Example Usage:

local_sched, _ := cron.Weekly("59 23 * * *")
fmt.Println(sched.Next(time.Now().Format(time.RFC3339)))
// Output: 2022-04-04T23:59:00Z

us_sched, _ := cron.Weekly("CRON_TZ=US/Central 30 9 * * *")
fmt.Println(sched.Next(time.Now()).Format(time.RFC3339))
// Output: 2022-04-04T14:30:00Z

func Weekly

func Weekly(raw string) (*Schedule, error)

Weekly parses a Schedule from spec scoped to a recurring weekly event. Spec consists of the following space-delimited fields, in the following order: - timezone e.g. CRON_TZ=US/Central (optional) - minutes of hour e.g. 30 (required) - hour of day e.g. 9 (required) - day of month (must be *) - month (must be *) - day of week e.g. 1 (required)

Example Usage:

local_sched, _ := cron.Weekly("59 23 *")
fmt.Println(sched.Next(time.Now().Format(time.RFC3339)))
// Output: 2022-04-04T23:59:00Z

us_sched, _ := cron.Weekly("CRON_TZ=US/Central 30 9 1-5")
fmt.Println(sched.Next(time.Now()).Format(time.RFC3339))
// Output: 2022-04-04T14:30:00Z

func (Schedule) Cron

func (s Schedule) Cron() string

Cron returns the cron spec for the schedule with the leading CRON_TZ stripped, if present.

func (Schedule) DaysOfWeek

func (s Schedule) DaysOfWeek() string

DaysOfWeek returns a humanized form of the day-of-week field.

func (Schedule) Humanize added in v2.4.0

func (s Schedule) Humanize() string

Humanize returns a slightly more human-friendly representation of the schedule.

func (Schedule) Location

func (s Schedule) Location() *time.Location

Location returns the IANA location for the schedule.

func (Schedule) Min

func (s Schedule) Min() time.Duration

Min returns the minimum duration of the schedule. This is calculated as follows:

  • Let t(0) be a given point in time (1970-01-01T01:01:01Z00:00)
  • Let t(max) be 168 hours after t(0).
  • Let t(1) be the next scheduled time after t(0).
  • Let t(n) be the next scheduled time after t(n-1).
  • Then, the minimum duration of s d(min) = min( t(n) - t(n-1) ∀ n ∈ N, t(n) < t(max) )

func (Schedule) Next

func (s Schedule) Next(t time.Time) time.Time

Next returns the next time in the schedule relative to t.

func (Schedule) String

func (s Schedule) String() string

String serializes the schedule to its original format. The leading CRON_TZ is maintained.

func (Schedule) Time

func (s Schedule) Time() string

Time returns a humanized form of the minute and hour fields.

func (Schedule) TimeParsed added in v2.2.0

func (s Schedule) TimeParsed() time.Time

TimeParsed returns the parsed time.Time of the minute and hour fields. If the time cannot be represented in a valid time.Time, a zero time is returned.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL