optimise file existence check
2 files changed, 21 insertions(+), 2 deletions(-)
changed files
M git/git.go → git/git.go
@@ -194,6 +194,25 @@ return commitRef, nil } +func (g *Repo) HasFile(path string) (bool, error) { + c, err := g.r.CommitObject(g.h) + if err != nil { + return false, fmt.Errorf("commit object: %w", err) + } + + tree, err := c.Tree() + if err != nil { + return false, fmt.Errorf("file tree: %w", err) + } + + file, err := tree.File(path) + if err != nil && err != object.ErrFileNotFound { + return false, err + } + + return file != nil, nil +} + func (g *Repo) FileContent(path string) (string, error) { c, err := g.r.CommitObject(g.h) if err != nil {
M routes/util.go → routes/util.go
@@ -16,9 +16,9 @@ "github.com/savsgio/atreugo/v11" ) func isGoModule(gr *git.Repo) bool { - _, err := gr.FileContent("go.mod") + has, _ := gr.HasFile("go.mod") - return err == nil + return has } func getDisplayName(name string) string {