[errors] Fix possibly-nil err annotations in cv.

This is finding all locations where `errors.Annotate` is called with
an error that MIGHT be `nil`. The replacements are:
  * `errors.WrapIf` - the err specifically could be nil, and we just
    want to do the `if err != nil { <wrap> }` thing.
  * `errors.Fmt` - the err is NOT ever nil, and we want to
    unconditionally format it.

This is for an upcoming change to remove `errors.Annotate` entirely,
but `errors.Fmt` (the automatic replacement for `errors.Annotate`)
will unconditionally return a non-nil error, even if it's told to
wrap `nil`.

R=gregorynisbet, vadimsh, yiwzhang

Change-Id: Ia659ca30e33422b73c8529c8db3dd655efc0ae9d
Reviewed-on: https://chromium-review.googlesource.com/c/infra/luci/luci-go/+/6594765
Commit-Queue: Gregory Nisbet <gregorynisbet@google.com>
Reviewed-by: Gregory Nisbet <gregorynisbet@google.com>
Auto-Submit: Robbie Iannucci <iannucci@google.com>
30 files changed
tree: 646a3190134256d787dca405a192b165a57e1886
  1. analysis/
  2. appengine/
  3. auth/
  4. auth_service/
  5. bisection/
  6. build/
  7. buildbucket/
  8. casviewer/
  9. cipd/
  10. cipkg/
  11. client/
  12. common/
  13. config/
  14. config_service/
  15. cv/
  16. deploy/
  17. examples/
  18. gae/
  19. gce/
  20. grpc/
  21. hardcoded/
  22. led/
  23. logdog/
  24. luci_notify/
  25. lucicfg/
  26. lucictx/
  27. luciexe/
  28. mailer/
  29. milo/
  30. mmutex/
  31. provenance/
  32. recipes_py/
  33. resultdb/
  34. scheduler/
  35. scripts/
  36. server/
  37. source_index/
  38. standalone/
  39. starlark/
  40. swarming/
  41. teams/
  42. third_party/
  43. tokenserver/
  44. tools/
  45. tree_status/
  46. vpython/
  47. web/
  48. .gitallowed
  49. .gitignore
  50. .go-lintable
  51. AUTHORS
  52. codereview.settings
  53. CONTRIBUTING.md
  54. CONTRIBUTORS
  55. go.mod
  56. go.sum
  57. LICENSE
  58. lucichecker.py
  59. OWNERS
  60. PRESUBMIT.py
  61. README.md
  62. staticcheck.conf
  63. tools.go
  64. WATCHLISTS
README.md

luci-go: LUCI services and tools in Go

GoReference

Installing

LUCI Go code is meant to be worked on from an Chromium infra.git checkout, which enforces packages versions and Go toolchain version. First get fetch via depot_tools.git then run:

fetch infra
cd infra/go
eval `./env.py`
cd src/go.chromium.org/luci

It is now possible to directly install tools with go install:

go install go.chromium.org/luci/auth/client/cmd/...@latest
go install go.chromium.org/luci/buildbucket/cmd/...@latest
go install go.chromium.org/luci/cipd/client/cmd/...@latest
go install go.chromium.org/luci/client/cmd/...@latest
go install go.chromium.org/luci/cv/cmd/...@latest
go install go.chromium.org/luci/gce/cmd/...@latest
go install go.chromium.org/luci/grpc/cmd/...@latest
go install go.chromium.org/luci/logdog/client/cmd/...@latest
go install go.chromium.org/luci/luci_notify/cmd/...@latest
go install go.chromium.org/luci/lucicfg/cmd/...@latest
go install go.chromium.org/luci/luciexe/legacy/cmd/...@latest
go install go.chromium.org/luci/mailer/cmd/...@latest
go install go.chromium.org/luci/mmutex/cmd/...@latest
go install go.chromium.org/luci/resultdb/cmd/...@latest
go install go.chromium.org/luci/server/cmd/...@latest
go install go.chromium.org/luci/swarming/cmd/...@latest
go install go.chromium.org/luci/tokenserver/cmd/...@latest
go install go.chromium.org/luci/tools/cmd/...@latest

Contributing

Contributing uses the same flow as Chromium contributions.