cron.go 1.8 KB

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