1
0

cron.go 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. package cron
  2. import (
  3. "time"
  4. log "unknwon.dev/clog/v2"
  5. "github.com/gogs/cron"
  6. "gogs.io/gogs/internal/conf"
  7. "gogs.io/gogs/internal/database"
  8. )
  9. var c = cron.New()
  10. func NewContext() {
  11. var (
  12. entry *cron.Entry
  13. err error
  14. )
  15. if conf.Cron.UpdateMirror.Enabled {
  16. entry, err = c.AddFunc("Update mirrors", conf.Cron.UpdateMirror.Schedule, database.MirrorUpdate)
  17. if err != nil {
  18. log.Fatal("Cron.(update mirrors): %v", err)
  19. }
  20. if conf.Cron.UpdateMirror.RunAtStart {
  21. entry.Prev = time.Now()
  22. entry.ExecTimes++
  23. go database.MirrorUpdate()
  24. }
  25. }
  26. if conf.Cron.RepoHealthCheck.Enabled {
  27. entry, err = c.AddFunc("Repository health check", conf.Cron.RepoHealthCheck.Schedule, database.GitFsck)
  28. if err != nil {
  29. log.Fatal("Cron.(repository health check): %v", err)
  30. }
  31. if conf.Cron.RepoHealthCheck.RunAtStart {
  32. entry.Prev = time.Now()
  33. entry.ExecTimes++
  34. go database.GitFsck()
  35. }
  36. }
  37. if conf.Cron.CheckRepoStats.Enabled {
  38. entry, err = c.AddFunc("Check repository statistics", conf.Cron.CheckRepoStats.Schedule, database.CheckRepoStats)
  39. if err != nil {
  40. log.Fatal("Cron.(check repository statistics): %v", err)
  41. }
  42. if conf.Cron.CheckRepoStats.RunAtStart {
  43. entry.Prev = time.Now()
  44. entry.ExecTimes++
  45. go database.CheckRepoStats()
  46. }
  47. }
  48. if conf.Cron.RepoArchiveCleanup.Enabled {
  49. entry, err = c.AddFunc("Repository archive cleanup", conf.Cron.RepoArchiveCleanup.Schedule, database.DeleteOldRepositoryArchives)
  50. if err != nil {
  51. log.Fatal("Cron.(repository archive cleanup): %v", err)
  52. }
  53. if conf.Cron.RepoArchiveCleanup.RunAtStart {
  54. entry.Prev = time.Now()
  55. entry.ExecTimes++
  56. go database.DeleteOldRepositoryArchives()
  57. }
  58. }
  59. c.Start()
  60. }
  61. // ListTasks returns all running cron tasks.
  62. func ListTasks() []*cron.Entry {
  63. return c.Entries()
  64. }