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  }