|
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- // Copyright 2020 The Gitea 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"
-
- "code.gitea.io/gitea/models"
- "github.com/unknwon/i18n"
- )
-
- // Config represents a basic configuration interface that cron task
- type Config interface {
- IsEnabled() bool
- DoRunAtStart() bool
- GetSchedule() string
- FormatMessage(name, status string, doer *models.User, args ...interface{}) string
- }
-
- // BaseConfig represents the basic config for a Cron task
- type BaseConfig struct {
- Enabled bool
- RunAtStart bool
- Schedule string
- }
-
- // OlderThanConfig represents a cron task with OlderThan setting
- type OlderThanConfig struct {
- BaseConfig
- OlderThan time.Duration
- }
-
- // UpdateExistingConfig represents a cron task with UpdateExisting setting
- type UpdateExistingConfig struct {
- BaseConfig
- UpdateExisting bool
- }
-
- // GetSchedule returns the schedule for the base config
- func (b *BaseConfig) GetSchedule() string {
- return b.Schedule
- }
-
- // IsEnabled returns the enabled status for the config
- func (b *BaseConfig) IsEnabled() bool {
- return b.Enabled
- }
-
- // DoRunAtStart returns whether the task should be run at the start
- func (b *BaseConfig) DoRunAtStart() bool {
- return b.RunAtStart
- }
-
- // FormatMessage returns a message for the task
- func (b *BaseConfig) FormatMessage(name, status string, doer *models.User, args ...interface{}) string {
- realArgs := make([]interface{}, 0, len(args)+2)
- realArgs = append(realArgs, i18n.Tr("en-US", "admin.dashboard."+name))
- if doer == nil {
- realArgs = append(realArgs, "(Cron)")
- } else {
- realArgs = append(realArgs, doer.Name)
- }
- if len(args) > 0 {
- realArgs = append(realArgs, args...)
- }
- if doer == nil || (doer.ID == -1 && doer.Name == "(Cron)") {
- return i18n.Tr("en-US", "admin.dashboard.cron."+status, realArgs...)
- }
- return i18n.Tr("en-US", "admin.dashboard.task."+status, realArgs...)
- }
|