diff options
author | Patrick Steinhardt <psteinhardt@gitlab.com> | 2021-08-17 10:32:33 +0300 |
---|---|---|
committer | Patrick Steinhardt <psteinhardt@gitlab.com> | 2021-08-17 10:32:33 +0300 |
commit | 063ec0b18a2a6eef4f2abe48548878a011916727 (patch) | |
tree | 7b31a7d9a83723ebabe7f1278365d79cef61a1ed | |
parent | f6ebdc9e7754cf97776fe388f3b0914ae123f5ad (diff) | |
parent | 0eb93dc32da8727550b97594caa739f7389b0867 (diff) |
Merge branch 'pks-linguist-fixes' into 'master'
linguist: Improve error messages
See merge request gitlab-org/gitaly!3763
-rw-r--r-- | internal/gitaly/linguist/linguist.go | 16 | ||||
-rw-r--r-- | internal/gitaly/service/commit/languages.go | 10 |
2 files changed, 14 insertions, 12 deletions
diff --git a/internal/gitaly/linguist/linguist.go b/internal/gitaly/linguist/linguist.go index b0b9d6026..667491fd0 100644 --- a/internal/gitaly/linguist/linguist.go +++ b/internal/gitaly/linguist/linguist.go @@ -54,20 +54,24 @@ func New(cfg config.Cfg) (*Instance, error) { func (inst *Instance) Stats(ctx context.Context, cfg config.Cfg, repoPath string, commitID string) (ByteCountPerLanguage, error) { cmd, err := startGitLinguist(ctx, cfg, repoPath, commitID, "stats") if err != nil { - return nil, err + return nil, fmt.Errorf("starting linguist: %w", err) } data, err := ioutil.ReadAll(cmd) if err != nil { - return nil, err + return nil, fmt.Errorf("reading linguist output: %w", err) } if err := cmd.Wait(); err != nil { - return nil, err + return nil, fmt.Errorf("waiting for linguist: %w", err) } stats := make(ByteCountPerLanguage) - return stats, json.Unmarshal(data, &stats) + if err := json.Unmarshal(data, &stats); err != nil { + return nil, fmt.Errorf("unmarshaling stats: %w", err) + } + + return stats, nil } // Color returns the color Linguist has assigned to language. @@ -83,7 +87,7 @@ func (inst *Instance) Color(language string) string { func startGitLinguist(ctx context.Context, cfg config.Cfg, repoPath string, commitID string, linguistCommand string) (*command.Command, error) { bundle, err := exec.LookPath("bundle") if err != nil { - return nil, err + return nil, fmt.Errorf("finding bundle executable: %w", err) } args := []string{ @@ -116,7 +120,7 @@ func startGitLinguist(ctx context.Context, cfg config.Cfg, repoPath string, comm internalCmd, err := command.New(ctx, cmd, nil, nil, nil, exportEnvironment()...) if err != nil { - return nil, err + return nil, fmt.Errorf("creating command: %w", err) } return internalCmd, nil diff --git a/internal/gitaly/service/commit/languages.go b/internal/gitaly/service/commit/languages.go index 566f63ce8..56c6645e6 100644 --- a/internal/gitaly/service/commit/languages.go +++ b/internal/gitaly/service/commit/languages.go @@ -14,8 +14,6 @@ import ( "gitlab.com/gitlab-org/gitaly/v14/internal/helper" "gitlab.com/gitlab-org/gitaly/v14/internal/helper/text" "gitlab.com/gitlab-org/gitaly/v14/proto/go/gitalypb" - "google.golang.org/grpc/codes" - "google.golang.org/grpc/status" ) var errAmbigRef = errors.New("ambiguous reference") @@ -38,16 +36,16 @@ func (s *server) CommitLanguages(ctx context.Context, req *gitalypb.CommitLangua commitID, err := s.lookupRevision(ctx, repo, revision) if err != nil { - return nil, err + return nil, helper.ErrInternalf("looking up revision: %w", err) } repoPath, err := repo.Path() if err != nil { - return nil, err + return nil, helper.ErrInternalf("repository path: %w", err) } stats, err := s.linguist.Stats(ctx, s.cfg, repoPath, commitID) if err != nil { - return nil, err + return nil, helper.ErrInternalf("language stats: %w", err) } resp := &gitalypb.CommitLanguagesResponse{} @@ -61,7 +59,7 @@ func (s *server) CommitLanguages(ctx context.Context, req *gitalypb.CommitLangua } if total == 0 { - return nil, status.Errorf(codes.Internal, "linguist stats added up to zero: %v", stats) + return nil, helper.ErrInternalf("linguist stats added up to zero: %v", stats) } for lang, count := range stats { |