in file/trigger.go [116:144]
func newIntervalTrigger(interval time.Duration, clock clock) trigger {
t := intervalTrigger{interval: interval, clock: clock}
switch interval {
case time.Second:
t.newInterval = newSecond
case time.Minute:
t.newInterval = newMinute
case time.Hour:
t.newInterval = newHour
case 24 * time.Hour: // calendar day
t.newInterval = newDay
case 7 * 24 * time.Hour: // calendar week
t.newInterval = newWeek
case 30 * 24 * time.Hour: // calendar month
t.newInterval = newMonth
case 365 * 24 * time.Hour: // calendar year
t.newInterval = newYear
default:
t.newInterval = func(lastTime time.Time, currentTime time.Time) bool {
lastInterval := lastTime.Unix() / (int64(t.interval) / int64(time.Second))
currentInterval := currentTime.Unix() / (int64(t.interval) / int64(time.Second))
return lastInterval != currentInterval
}
}
t.lastRotate = clock.Now()
return &t
}