2014-04-13 05:30:09 +04:00
// 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 (
2014-06-13 21:01:52 +04:00
"time"
2016-02-20 23:58:09 +03:00
"github.com/gogits/cron"
2014-06-13 21:01:52 +04:00
2016-11-10 19:24:48 +03:00
"code.gitea.io/gitea/models"
"code.gitea.io/gitea/modules/log"
"code.gitea.io/gitea/modules/setting"
2016-02-20 23:58:09 +03:00
)
2014-06-13 21:01:52 +04:00
2016-02-20 23:58:09 +03:00
var c = cron . New ( )
2016-11-25 11:19:24 +03:00
// NewContext begins cron tasks
2016-02-20 23:58:09 +03:00
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 {
2019-04-02 10:48:31 +03:00
log . Fatal ( "Cron[Update mirrors]: %v" , err )
2016-02-20 23:58:09 +03:00
}
if setting . Cron . UpdateMirror . RunAtStart {
entry . Prev = time . Now ( )
entry . ExecTimes ++
go models . MirrorUpdate ( )
}
2014-06-13 21:01:52 +04:00
}
2016-02-20 23:58:09 +03:00
if setting . Cron . RepoHealthCheck . Enabled {
entry , err = c . AddFunc ( "Repository health check" , setting . Cron . RepoHealthCheck . Schedule , models . GitFsck )
if err != nil {
2019-04-02 10:48:31 +03:00
log . Fatal ( "Cron[Repository health check]: %v" , err )
2016-02-20 23:58:09 +03:00
}
if setting . Cron . RepoHealthCheck . RunAtStart {
entry . Prev = time . Now ( )
entry . ExecTimes ++
go models . GitFsck ( )
}
2014-06-13 21:01:52 +04:00
}
2016-02-20 23:58:09 +03:00
if setting . Cron . CheckRepoStats . Enabled {
entry , err = c . AddFunc ( "Check repository statistics" , setting . Cron . CheckRepoStats . Schedule , models . CheckRepoStats )
if err != nil {
2019-04-02 10:48:31 +03:00
log . Fatal ( "Cron[Check repository statistics]: %v" , err )
2014-06-13 21:01:52 +04:00
}
2016-02-20 23:58:09 +03:00
if setting . Cron . CheckRepoStats . RunAtStart {
entry . Prev = time . Now ( )
entry . ExecTimes ++
go models . CheckRepoStats ( )
2014-06-13 21:01:52 +04:00
}
}
2017-02-11 07:00:46 +03:00
if setting . Cron . ArchiveCleanup . Enabled {
entry , err = c . AddFunc ( "Clean up old repository archives" , setting . Cron . ArchiveCleanup . Schedule , models . DeleteOldRepositoryArchives )
if err != nil {
2019-04-02 10:48:31 +03:00
log . Fatal ( "Cron[Clean up old repository archives]: %v" , err )
2017-02-11 07:00:46 +03:00
}
if setting . Cron . ArchiveCleanup . RunAtStart {
entry . Prev = time . Now ( )
entry . ExecTimes ++
go models . DeleteOldRepositoryArchives ( )
}
}
2017-05-10 16:10:18 +03:00
if setting . Cron . SyncExternalUsers . Enabled {
entry , err = c . AddFunc ( "Synchronize external users" , setting . Cron . SyncExternalUsers . Schedule , models . SyncExternalUsers )
if err != nil {
2019-04-02 10:48:31 +03:00
log . Fatal ( "Cron[Synchronize external users]: %v" , err )
2017-05-10 16:10:18 +03:00
}
if setting . Cron . SyncExternalUsers . RunAtStart {
entry . Prev = time . Now ( )
entry . ExecTimes ++
go models . SyncExternalUsers ( )
}
}
2017-10-26 03:49:16 +03:00
if setting . Cron . DeletedBranchesCleanup . Enabled {
entry , err = c . AddFunc ( "Remove old deleted branches" , setting . Cron . DeletedBranchesCleanup . Schedule , models . RemoveOldDeletedBranches )
if err != nil {
2019-04-02 10:48:31 +03:00
log . Fatal ( "Cron[Remove old deleted branches]: %v" , err )
2017-10-26 03:49:16 +03:00
}
if setting . Cron . DeletedBranchesCleanup . RunAtStart {
entry . Prev = time . Now ( )
entry . ExecTimes ++
go models . RemoveOldDeletedBranches ( )
}
}
2016-02-20 23:58:09 +03:00
c . Start ( )
2014-06-13 21:01:52 +04:00
}
2016-02-20 23:58:09 +03:00
// ListTasks returns all running cron tasks.
func ListTasks ( ) [ ] * cron . Entry {
return c . Entries ( )
2014-04-13 05:30:09 +04:00
}