mirror of
https://github.com/go-gitea/gitea.git
synced 2026-07-24 18:00:35 +00:00
enable the golangci depguard lint rule: deny "models" and its sub packages in "modelmigration" package.
72 lines
2.4 KiB
Go
72 lines
2.4 KiB
Go
// Copyright 2026 The Gitea Authors. All rights reserved.
|
|
// SPDX-License-Identifier: MIT
|
|
|
|
package git
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
"io"
|
|
"io/fs"
|
|
"os"
|
|
"path/filepath"
|
|
|
|
"gitea.dev/modules/git/gitrepo"
|
|
"gitea.dev/modules/util"
|
|
)
|
|
|
|
// IsRepositoryExist returns true if the repository directory exists in the disk
|
|
func IsRepositoryExist(ctx context.Context, repo RepositoryFacade) (bool, error) {
|
|
return util.IsExist(gitrepo.RepoLocalPath(repo))
|
|
}
|
|
|
|
// DeleteRepository deletes the repository directory from the disk, it will return
|
|
// nil if the repository does not exist.
|
|
func DeleteRepository(ctx context.Context, repo RepositoryFacade) error {
|
|
return util.RemoveAll(gitrepo.RepoLocalPath(repo))
|
|
}
|
|
|
|
// RenameRepository renames a repository's name on disk
|
|
func RenameRepository(ctx context.Context, repo, newRepo RepositoryFacade) error {
|
|
dstDir := gitrepo.RepoLocalPath(newRepo)
|
|
if err := os.MkdirAll(filepath.Dir(dstDir), os.ModePerm); err != nil {
|
|
return fmt.Errorf("Failed to create dir %s: %w", filepath.Dir(dstDir), err)
|
|
}
|
|
|
|
if err := util.Rename(gitrepo.RepoLocalPath(repo), dstDir); err != nil {
|
|
return fmt.Errorf("rename repository directory: %w", err)
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func InitRepository(ctx context.Context, repo RepositoryFacade, objectFormatName string) error {
|
|
return InitRepositoryLocal(ctx, gitrepo.RepoLocalPath(repo), true, objectFormatName)
|
|
}
|
|
|
|
func GetRepoFS(repo RepositoryFacade) fs.FS {
|
|
return os.DirFS(gitrepo.RepoLocalPath(repo))
|
|
}
|
|
|
|
func IsRepoFileExist(ctx context.Context, repo RepositoryFacade, relativeFilePath string) (bool, error) {
|
|
absoluteFilePath := filepath.Join(gitrepo.RepoLocalPath(repo), relativeFilePath)
|
|
return util.IsExist(absoluteFilePath)
|
|
}
|
|
|
|
func IsRepoDirExist(ctx context.Context, repo RepositoryFacade, relativeDirPath string) (bool, error) {
|
|
absoluteDirPath := filepath.Join(gitrepo.RepoLocalPath(repo), relativeDirPath)
|
|
return util.IsDir(absoluteDirPath)
|
|
}
|
|
|
|
func RemoveRepoFileOrDir(ctx context.Context, repo RepositoryFacade, relativeFileOrDirPath string) error {
|
|
absoluteFilePath := filepath.Join(gitrepo.RepoLocalPath(repo), relativeFileOrDirPath)
|
|
return util.Remove(absoluteFilePath)
|
|
}
|
|
|
|
func CreateRepoFile(ctx context.Context, repo RepositoryFacade, relativeFilePath string) (io.WriteCloser, error) {
|
|
absoluteFilePath := filepath.Join(gitrepo.RepoLocalPath(repo), relativeFilePath)
|
|
if err := os.MkdirAll(filepath.Dir(absoluteFilePath), os.ModePerm); err != nil {
|
|
return nil, err
|
|
}
|
|
return os.Create(absoluteFilePath)
|
|
}
|