-
Notifications
You must be signed in to change notification settings - Fork 7.6k
refactor: drop multierror in favor of std #12234
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. Weβll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
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 <[email protected]>
Signed-off-by: ferhat elmas <[email protected]>
e624e8f to
376ea6b
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
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