refactor: drop multierror in favor of std#12234
Conversation
There was a problem hiding this comment.
Pull request overview
This PR refactors error aggregation by replacing the third-party github.com/hashicorp/go-multierror library with Go's standard library errors.Join (available since Go 1.20). This modernizes the codebase to use built-in functionality and removes an external dependency.
Key Changes:
- Migrated from
multierror.Appendpattern to collecting errors in a slice and usingerrors.Join - Removed dependency on
github.com/hashicorp/go-multierrorand its transitive dependencygithub.com/hashicorp/errwrap - Applied the refactoring consistently to both secret and variable set commands
Reviewed changes
Copilot reviewed 3 out of 4 changed files in this pull request and generated 2 comments.
| File | Description |
|---|---|
| pkg/cmd/variable/set/set.go | Refactored error aggregation to use errors.Join with a slice of errors instead of multierror.Append |
| pkg/cmd/secret/set/set.go | Refactored error aggregation to use errors.Join with a slice of errors instead of multierror.Append |
| go.mod | Removed github.com/hashicorp/go-multierror dependency and its transitive github.com/hashicorp/errwrap dependency |
| go.sum | Cleaned up go.sum entries for removed dependencies |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
You can also share your feedback on Copilot code review for a chance to win a $100 gift card. Take the survey.
|
Are we supposed to run Just in case, put it in a separate commit. |
|
Hey @ferhatelmas, Yeh, |
|
Sounds good, let's rebase and squash them together for your review then |
|
It's fine to keep them separate, just needs to lint at the PR level to avoid us getting out of date with our license requirements. |
Drop github.com/hashicorp/go-multierror in favor of https://pkg.go.dev/errors#Join (go1.20). Related to cli#11468 Signed-off-by: ferhat elmas <elmas.ferhat@gmail.com>
Signed-off-by: ferhat elmas <elmas.ferhat@gmail.com>
e624e8f to
376ea6b
Compare
There was a problem hiding this comment.
Just for posterity, here's the difference in output, not that we really depend on it.
multierror
package main
import (
"errors"
"fmt"
"github.com/hashicorp/go-multierror"
)
func main() {
err1 := errors.New("failed to connect to database")
err2 := errors.New("failed to read config file")
err3 := errors.New("failed to initialize cache")
var result error
result = multierror.Append(result, err1)
result = multierror.Append(result, err2)
result = multierror.Append(result, err3)
fmt.Println(result)
}3 errors occurred:
* failed to connect to databas
* failed to read config file
* failed to initialize cache
stdlib
package main
import (
"errors"
"fmt"
)
func main() {
err1 := errors.New("failed to connect to database")
err2 := errors.New("failed to read config file")
err3 := errors.New("failed to initialize cache")
joined := errors.Join(err1, err2, err3)
fmt.Println(joined)
}
failed to connect to database
failed to read config file
failed to initialize cache
|
Sweet, thanks for just getting this done! |
This MR contains the following updates: | Package | Update | Change | |---|---|---| | [cli/cli](https://github.com/cli/cli) | patch | `v2.83.1` -> `v2.83.2` | MR created with the help of [el-capitano/tools/renovate-bot](https://gitlab.com/el-capitano/tools/renovate-bot). **Proposed changes to behavior should be submitted there as MRs.** --- ### Release Notes <details> <summary>cli/cli (cli/cli)</summary> ### [`v2.83.2`](https://github.com/cli/cli/releases/tag/v2.83.2): GitHub CLI 2.83.2 [Compare Source](cli/cli@v2.83.1...v2.83.2) #### What's Changed ##### 🐛 Fixes - Isolate user-provided search query from contextual qualifiers by [@​babakks](https://github.com/babakks) in [#​12170](cli/cli#12170) ##### 📚 Docs & Chores - Refactor cfg out of CAPI Client by [@​williammartin](https://github.com/williammartin) in [#​12148](cli/cli#12148) - Remove extra flag default from help usage by [@​andyfeller](https://github.com/andyfeller) in [#​12154](cli/cli#12154) - Add PGP key rotation PoC by [@​babakks](https://github.com/babakks) in [#​12176](cli/cli#12176) - Add Debian/Ubuntu to unofficial packages by [@​andyfeller](https://github.com/andyfeller) in [#​12191](cli/cli#12191) - Error if go-licenses is not on the PATH by [@​williammartin](https://github.com/williammartin) in [#​12238](cli/cli#12238) - refactor: drop multierror in favor of std by [@​ferhatelmas](https://github.com/ferhatelmas) in [#​12234](cli/cli#12234) #####Dependencies - chore(deps): bump golang.org/x/crypto from 0.43.0 to 0.45.0 by [@​dependabot](https://github.com/dependabot)\[bot] in [#​12165](cli/cli#12165) - chore(deps): bump actions/checkout from 5 to 6 by [@​dependabot](https://github.com/dependabot)\[bot] in [#​12178](cli/cli#12178) - chore(deps): bump google.golang.org/protobuf from 1.36.9 to 1.36.10 by [@​dependabot](https://github.com/dependabot)\[bot] in [#​12037](cli/cli#12037) - chore(deps): bump golangci/golangci-lint-action from 9.0.0 to 9.1.0 by [@​dependabot](https://github.com/dependabot)\[bot] in [#​12189](cli/cli#12189) - chore(deps): bump github.com/theupdateframework/go-tuf/v2 from 2.2.0 to 2.3.0 by [@​dependabot](https://github.com/dependabot)\[bot] in [#​12100](cli/cli#12100) - chore(deps): bump github.com/gabriel-vasile/mimetype from 1.4.10 to 1.4.11 by [@​dependabot](https://github.com/dependabot)\[bot] in [#​12051](cli/cli#12051) - chore(deps): bump google.golang.org/grpc from 1.75.0 to 1.76.0 by [@​dependabot](https://github.com/dependabot)\[bot] in [#​11972](cli/cli#11972) - chore(deps): bump github.com/charmbracelet/huh from 0.7.0 to 0.8.0 by [@​dependabot](https://github.com/dependabot)\[bot] in [#​11971](cli/cli#11971) - Bump Go to 1.25.4 by [@​github-actions](https://github.com/github-actions)\[bot] in [#​12104](cli/cli#12104) - chore(deps): bump github.com/gdamore/tcell/v2 from 2.9.0 to 2.13.1 by [@​dependabot](https://github.com/dependabot)\[bot] in [#​12246](cli/cli#12246) - chore(deps): bump github.com/hashicorp/go-version from 1.7.0 to 1.8.0 by [@​dependabot](https://github.com/dependabot)\[bot] in [#​12247](cli/cli#12247) - chore(deps): bump github.com/google/go-containerregistry from 0.20.6 to 0.20.7 by [@​dependabot](https://github.com/dependabot)\[bot] in [#​12245](cli/cli#12245) - Bump Go to 1.25.5 by [@​github-actions](https://github.com/github-actions)\[bot] in [#​12250](cli/cli#12250) - Bump dev-tunnels SDK 0.1.13 to 0.1.19 by [@​sam-byng](https://github.com/sam-byng) in [#​12285](cli/cli#12285) #### New Contributors - [@​ferhatelmas](https://github.com/ferhatelmas) made their first contribution in [#​12234](cli/cli#12234) - [@​sam-byng](https://github.com/sam-byng) made their first contribution in [#​12285](cli/cli#12285) **Full Changelog**: <cli/cli@v2.83.1...v2.83.2> </details> --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Enabled. ♻ **Rebasing**: Whenever MR is behind base branch, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this MR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this MR, check this box --- This MR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0Mi40Ny4wIiwidXBkYXRlZEluVmVyIjoiNDIuNDcuMCIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiUmVub3ZhdGUgQm90Il19-->
Drop github.com/hashicorp/go-multierror
in favor of https://pkg.go.dev/errors#Join (go1.20).
Related to #11468