diff options
Diffstat (limited to 'cmd/gitaly-git2go/command/commit/validate.go')
-rw-r--r-- | cmd/gitaly-git2go/command/commit/validate.go | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/cmd/gitaly-git2go/command/commit/validate.go b/cmd/gitaly-git2go/command/commit/validate.go new file mode 100644 index 000000000..8854cdbbe --- /dev/null +++ b/cmd/gitaly-git2go/command/commit/validate.go @@ -0,0 +1,48 @@ +// +build static,system_libgit2 + +package commit + +import ( + "os" + + git "github.com/libgit2/git2go/v30" + "gitlab.com/gitlab-org/gitaly/internal/git2go" +) + +func validateFileExists(index *git.Index, path string) error { + if _, err := index.Find(path); err != nil { + if git.IsErrorCode(err, git.ErrNotFound) { + return git2go.FileNotFoundError(path) + } + + return err + } + + return nil +} + +func validateFileDoesNotExist(index *git.Index, path string) error { + _, err := index.Find(path) + if err == nil { + return git2go.FileExistsError(path) + } + + if !git.IsErrorCode(err, git.ErrNotFound) { + return err + } + + return nil +} + +func validateDirectoryDoesNotExist(index *git.Index, path string) error { + _, err := index.FindPrefix(path + string(os.PathSeparator)) + if err == nil { + return git2go.DirectoryExistsError(path) + } + + if !git.IsErrorCode(err, git.ErrNotFound) { + return err + } + + return nil +} |