From 795c52255ff63052d007b004ccc710656fb59777 Mon Sep 17 00:00:00 2001 From: delaosa Date: Fri, 10 Apr 2020 21:56:24 +0200 Subject: [PATCH] Update next update message based on crontab --- cmd/podsync/main.go | 20 +++++++++++++------- cmd/podsync/updater.go | 3 +-- 2 files changed, 14 insertions(+), 9 deletions(-) diff --git a/cmd/podsync/main.go b/cmd/podsync/main.go index 4a96098..918b00b 100644 --- a/cmd/podsync/main.go +++ b/cmd/podsync/main.go @@ -111,6 +111,10 @@ func main() { updates := make(chan *config.Feed, 16) defer close(updates) + //Create Cron + c := cron.New(cron.WithChain(cron.SkipIfStillRunning(nil))) + m := make(map[string]cron.EntryID) + // Run updates listener group.Go(func() error { for { @@ -118,6 +122,8 @@ func main() { case feed := <-updates: if err := updater.Update(ctx, feed); err != nil { log.WithError(err).Errorf("failed to update feed: %s", feed.URL) + } else { + log.Infof("Next update of %s: %s", feed.ID, c.Entry(m[feed.ID]).Next) } case <-ctx.Done(): return ctx.Err() @@ -127,23 +133,23 @@ func main() { // Run cron scheduler group.Go(func() error { - c := cron.New(cron.WithChain(cron.SkipIfStillRunning(nil))) + var cronid cron.EntryID for _, feed := range cfg.Feeds { - _feed := feed if feed.CronSchedule == "" { feed.CronSchedule = fmt.Sprintf("@every %s", feed.UpdatePeriod.String()) } - - if _, err = c.AddFunc(_feed.CronSchedule, func() { - log.Debugf("adding %q to update queue", _feed.URL) + _feed := feed + if cronid, err = c.AddFunc(_feed.CronSchedule, func() { + log.Debugf("adding %q to update queue", _feed.ID) updates <- _feed + }); err != nil { log.WithError(err).Fatalf("can't create cron task for feed: %s", _feed.ID) } - log.Debugf("-> %s (update '%s')", _feed.URL, feed.CronSchedule) - + m[_feed.ID] = cronid + log.Debugf("-> %s (update '%s')", _feed.ID, _feed.CronSchedule) // Perform initial update after CLI restart updates <- _feed } diff --git a/cmd/podsync/updater.go b/cmd/podsync/updater.go index 3660275..e3cc607 100644 --- a/cmd/podsync/updater.go +++ b/cmd/podsync/updater.go @@ -68,8 +68,7 @@ func (u *Updater) Update(ctx context.Context, feedConfig *config.Feed) error { } elapsed := time.Since(started) - nextUpdate := time.Now().Add(feedConfig.UpdatePeriod.Duration) - log.Infof("successfully updated feed in %s, next update at %s", elapsed, nextUpdate.Format(time.Kitchen)) + log.Infof("successfully updated feed in %s", elapsed) return nil }