aboutsummaryrefslogtreecommitdiff
path: root/pkg/cron/cron.go
diff options
context:
space:
mode:
authorUnknwon <u@gogs.io>2017-04-04 19:29:59 -0400
committerUnknwon <u@gogs.io>2017-04-04 19:29:59 -0400
commitd05395fe906dad7741201faa69a54fef538deda9 (patch)
tree11dae6c5c9b40b8ce85c7294bd0309c03cb1199e /pkg/cron/cron.go
parent37b10666dea98cebf75d0c6f11ee87211ef94703 (diff)
Refactoring: rename modules -> pkg
Reasons to change: 1. Shorter than 'modules' 2. More generally used by other Go projects 3. Corresponds to the naming of '$GOPATH/pkg' directory
Diffstat (limited to 'pkg/cron/cron.go')
-rw-r--r--pkg/cron/cron.go75
1 files changed, 75 insertions, 0 deletions
diff --git a/pkg/cron/cron.go b/pkg/cron/cron.go
new file mode 100644
index 00000000..419be06b
--- /dev/null
+++ b/pkg/cron/cron.go
@@ -0,0 +1,75 @@
+// Copyright 2014 The Gogs Authors. All rights reserved.
+// Use of this source code is governed by a MIT-style
+// license that can be found in the LICENSE file.
+
+package cron
+
+import (
+ "time"
+
+ log "gopkg.in/clog.v1"
+
+ "github.com/gogits/cron"
+
+ "github.com/gogits/gogs/models"
+ "github.com/gogits/gogs/pkg/setting"
+)
+
+var c = cron.New()
+
+func NewContext() {
+ var (
+ entry *cron.Entry
+ err error
+ )
+ if setting.Cron.UpdateMirror.Enabled {
+ entry, err = c.AddFunc("Update mirrors", setting.Cron.UpdateMirror.Schedule, models.MirrorUpdate)
+ if err != nil {
+ log.Fatal(2, "Cron.(update mirrors): %v", err)
+ }
+ if setting.Cron.UpdateMirror.RunAtStart {
+ entry.Prev = time.Now()
+ entry.ExecTimes++
+ go models.MirrorUpdate()
+ }
+ }
+ if setting.Cron.RepoHealthCheck.Enabled {
+ entry, err = c.AddFunc("Repository health check", setting.Cron.RepoHealthCheck.Schedule, models.GitFsck)
+ if err != nil {
+ log.Fatal(2, "Cron.(repository health check): %v", err)
+ }
+ if setting.Cron.RepoHealthCheck.RunAtStart {
+ entry.Prev = time.Now()
+ entry.ExecTimes++
+ go models.GitFsck()
+ }
+ }
+ if setting.Cron.CheckRepoStats.Enabled {
+ entry, err = c.AddFunc("Check repository statistics", setting.Cron.CheckRepoStats.Schedule, models.CheckRepoStats)
+ if err != nil {
+ log.Fatal(2, "Cron.(check repository statistics): %v", err)
+ }
+ if setting.Cron.CheckRepoStats.RunAtStart {
+ entry.Prev = time.Now()
+ entry.ExecTimes++
+ go models.CheckRepoStats()
+ }
+ }
+ if setting.Cron.RepoArchiveCleanup.Enabled {
+ entry, err = c.AddFunc("Repository archive cleanup", setting.Cron.RepoArchiveCleanup.Schedule, models.DeleteOldRepositoryArchives)
+ if err != nil {
+ log.Fatal(2, "Cron.(repository archive cleanup): %v", err)
+ }
+ if setting.Cron.RepoArchiveCleanup.RunAtStart {
+ entry.Prev = time.Now()
+ entry.ExecTimes++
+ go models.DeleteOldRepositoryArchives()
+ }
+ }
+ c.Start()
+}
+
+// ListTasks returns all running cron tasks.
+func ListTasks() []*cron.Entry {
+ return c.Entries()
+}