code.gitea.io/gitea@v1.19.3/modules/doctor/checkOldArchives.go (about) 1 // Copyright 2021 The Gitea Authors. All rights reserved. 2 // SPDX-License-Identifier: MIT 3 4 package doctor 5 6 import ( 7 "context" 8 "os" 9 "path/filepath" 10 11 repo_model "code.gitea.io/gitea/models/repo" 12 "code.gitea.io/gitea/modules/log" 13 "code.gitea.io/gitea/modules/util" 14 ) 15 16 func checkOldArchives(ctx context.Context, logger log.Logger, autofix bool) error { 17 numRepos := 0 18 numReposUpdated := 0 19 err := iterateRepositories(ctx, func(repo *repo_model.Repository) error { 20 if repo.IsEmpty { 21 return nil 22 } 23 24 p := filepath.Join(repo.RepoPath(), "archives") 25 isDir, err := util.IsDir(p) 26 if err != nil { 27 log.Warn("check if %s is directory failed: %v", p, err) 28 } 29 if isDir { 30 numRepos++ 31 if autofix { 32 if err := os.RemoveAll(p); err == nil { 33 numReposUpdated++ 34 } else { 35 log.Warn("remove %s failed: %v", p, err) 36 } 37 } 38 } 39 return nil 40 }) 41 42 if autofix { 43 logger.Info("%d / %d old archives in repository deleted", numReposUpdated, numRepos) 44 } else { 45 logger.Info("%d old archives in repository need to be deleted", numRepos) 46 } 47 48 return err 49 } 50 51 func init() { 52 Register(&Check{ 53 Title: "Check old archives", 54 Name: "check-old-archives", 55 IsDefault: false, 56 Run: checkOldArchives, 57 Priority: 7, 58 }) 59 }