diff options
author | zeripath <art27@cantab.net> | 2020-05-17 00:31:38 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-05-16 19:31:38 -0400 |
commit | 9a2e47b23a6d460acfce9b1b77e6f9fb06ca1b75 (patch) | |
tree | b1852472e1ecf6bdb1822b41655bdaf8afd87c1b /routers | |
parent | c18144086f9d4a06adbd4a7c08cfa6dab91224ec (diff) | |
download | gitea-9a2e47b23a6d460acfce9b1b77e6f9fb06ca1b75.tar.gz gitea-9a2e47b23a6d460acfce9b1b77e6f9fb06ca1b75.zip |
Refactor Cron and merge dashboard tasks (#10745)
* Refactor Cron and merge dashboard tasks
* Merge Cron and Dashboard tasks
* Make every cron task report a system notice on completion
* Refactor the creation of these tasks
* Ensure that execution counts of tasks is correct
* Allow cron tasks to be started from the cron page
* golangci-lint fixes
* Enforce that only one task with the same name can be registered
Signed-off-by: Andrew Thornton <art27@cantab.net>
* fix name check
Signed-off-by: Andrew Thornton <art27@cantab.net>
* as per @guillep2k
* as per @lafriks
Signed-off-by: Andrew Thornton <art27@cantab.net>
* Add git.CommandContext variants
Signed-off-by: Andrew Thornton <art27@cantab.net>
Co-authored-by: Lauris BH <lauris@nix.lv>
Co-authored-by: Lunny Xiao <xiaolunwen@gmail.com>
Co-authored-by: techknowlogick <techknowlogick@gitea.io>
Diffstat (limited to 'routers')
-rw-r--r-- | routers/admin/admin.go | 65 | ||||
-rw-r--r-- | routers/init.go | 35 |
2 files changed, 41 insertions, 59 deletions
diff --git a/routers/admin/admin.go b/routers/admin/admin.go index 1b4a8631cd..7595f4929d 100644 --- a/routers/admin/admin.go +++ b/routers/admin/admin.go @@ -21,11 +21,9 @@ import ( "code.gitea.io/gitea/modules/context" "code.gitea.io/gitea/modules/cron" "code.gitea.io/gitea/modules/git" - "code.gitea.io/gitea/modules/graceful" "code.gitea.io/gitea/modules/log" "code.gitea.io/gitea/modules/process" "code.gitea.io/gitea/modules/queue" - repo_module "code.gitea.io/gitea/modules/repository" "code.gitea.io/gitea/modules/setting" "code.gitea.io/gitea/modules/timeutil" "code.gitea.io/gitea/services/mailer" @@ -124,22 +122,6 @@ func updateSystemStatus() { sysStatus.NumGC = m.NumGC } -// Operation Operation types. -type Operation int - -const ( - cleanInactivateUser Operation = iota + 1 - cleanRepoArchives - cleanMissingRepos - gitGCRepos - syncSSHAuthorizedKey - syncRepositoryUpdateHook - reinitMissingRepository - syncExternalUsers - gitFsck - deleteGeneratedRepositoryAvatars -) - // Dashboard show admin panel dashboard func Dashboard(ctx *context.Context) { ctx.Data["Title"] = ctx.Tr("admin.dashboard") @@ -162,48 +144,13 @@ func DashboardPost(ctx *context.Context, form auth.AdminDashboardForm) { ctx.Data["SysStatus"] = sysStatus // Run operation. - if form.Op > 0 { - var err error - var success string - shutdownCtx := graceful.GetManager().ShutdownContext() - - switch Operation(form.Op) { - case cleanInactivateUser: - success = ctx.Tr("admin.dashboard.delete_inactivate_accounts_success") - err = models.DeleteInactivateUsers() - case cleanRepoArchives: - success = ctx.Tr("admin.dashboard.delete_repo_archives_success") - err = models.DeleteRepositoryArchives() - case cleanMissingRepos: - success = ctx.Tr("admin.dashboard.delete_missing_repos_success") - err = repo_module.DeleteMissingRepositories(ctx.User) - case gitGCRepos: - success = ctx.Tr("admin.dashboard.git_gc_repos_success") - err = repo_module.GitGcRepos(shutdownCtx) - case syncSSHAuthorizedKey: - success = ctx.Tr("admin.dashboard.resync_all_sshkeys_success") - err = models.RewriteAllPublicKeys() - case syncRepositoryUpdateHook: - success = ctx.Tr("admin.dashboard.resync_all_hooks_success") - err = repo_module.SyncRepositoryHooks(shutdownCtx) - case reinitMissingRepository: - success = ctx.Tr("admin.dashboard.reinit_missing_repos_success") - err = repo_module.ReinitMissingRepositories() - case syncExternalUsers: - success = ctx.Tr("admin.dashboard.sync_external_users_started") - go graceful.GetManager().RunWithShutdownContext(models.SyncExternalUsers) - case gitFsck: - success = ctx.Tr("admin.dashboard.git_fsck_started") - err = repo_module.GitFsck(shutdownCtx) - case deleteGeneratedRepositoryAvatars: - success = ctx.Tr("admin.dashboard.delete_generated_repository_avatars_success") - err = models.RemoveRandomAvatars() - } - - if err != nil { - ctx.Flash.Error(err.Error()) + if form.Op != "" { + task := cron.GetTask(form.Op) + if task != nil { + go task.RunWithUser(ctx.User, nil) + ctx.Flash.Success(ctx.Tr("admin.dashboard.task.started", ctx.Tr("admin.dashboard."+form.Op))) } else { - ctx.Flash.Success(success) + ctx.Flash.Error(ctx.Tr("admin.dashboard.task.unknown", form.Op)) } } diff --git a/routers/init.go b/routers/init.go index 72f55c809c..c891ec3149 100644 --- a/routers/init.go +++ b/routers/init.go @@ -25,6 +25,7 @@ import ( "code.gitea.io/gitea/modules/markup" "code.gitea.io/gitea/modules/markup/external" "code.gitea.io/gitea/modules/notification" + "code.gitea.io/gitea/modules/options" "code.gitea.io/gitea/modules/setting" "code.gitea.io/gitea/modules/ssh" "code.gitea.io/gitea/modules/task" @@ -33,7 +34,9 @@ import ( mirror_service "code.gitea.io/gitea/services/mirror" pull_service "code.gitea.io/gitea/services/pull" + "gitea.com/macaron/i18n" "gitea.com/macaron/macaron" + unknwoni18n "github.com/unknwon/i18n" ) func checkRunMode() { @@ -79,6 +82,33 @@ func initDBEngine(ctx context.Context) (err error) { return nil } +// InitLocales loads the locales +func InitLocales() { + localeNames, err := options.Dir("locale") + + if err != nil { + log.Fatal("Failed to list locale files: %v", err) + } + localFiles := make(map[string][]byte) + + for _, name := range localeNames { + localFiles[name], err = options.Locale(name) + + if err != nil { + log.Fatal("Failed to load %s locale file. %v", name, err) + } + } + i18n.I18n(i18n.Options{ + SubURL: setting.AppSubURL, + Files: localFiles, + Langs: setting.Langs, + Names: setting.Names, + DefaultLang: "en-US", + Redirect: false, + CookieDomain: setting.SessionConfig.Domain, + }) +} + // GlobalInit is for global configuration reload-able. func GlobalInit(ctx context.Context) { setting.NewContext() @@ -91,6 +121,11 @@ func GlobalInit(ctx context.Context) { log.Trace("Custom path: %s", setting.CustomPath) log.Trace("Log path: %s", setting.LogRootPath) + // Setup i18n + InitLocales() + + log.Info("%s", unknwoni18n.Tr("en-US", "admin.dashboard.delete_repo_archives")) + NewServices() if setting.InstallLock { |