You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
backy/pkg/backy/cron.go

39 lines
861 B

// cron.go
// Copyright (C) Andrew Woodlee 2023
// License: Apache-2.0
package backy
import (
"fmt"
"strings"
"time"
"git.andrewnw.xyz/CyberShell/backy/pkg/logging"
"github.com/go-co-op/gocron"
)
func (opts *ConfigOpts) Cron() {
s := gocron.NewScheduler(time.Local)
s.TagsUnique()
cmdLists := opts.CmdConfigLists
for listName, config := range cmdLists {
if config.Name == "" {
config.Name = listName
}
cron := strings.TrimSpace(config.Cron)
if cron != "" {
opts.Logger.Info().Str("Scheduling cron list", config.Name).Str("Time", cron).Send()
_, err := s.CronWithSeconds(cron).Tag(config.Name).Do(func(cron string) {
opts.RunListConfig(cron)
}, cron)
if err != nil {
logging.ExitWithMSG(fmt.Sprintf("error: %v", err), 1, &opts.Logger)
}
}
}
opts.Logger.Info().Msg("Starting cron mode...")
s.StartBlocking()
}