Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Conversation

@ferhatelmas
Copy link
Contributor

Drop github.com/hashicorp/go-multierror
in favor of https://pkg.go.dev/errors#Join (go1.20).

Related to #11468

@ferhatelmas ferhatelmas requested a review from a team as a code owner November 30, 2025 22:54
@cliAutomation cliAutomation added the external pull request originating outside of the CLI core team label Nov 30, 2025
Copy link
Contributor

Copilot AI left a 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.Append pattern to collecting errors in a slice and using errors.Join
  • Removed dependency on github.com/hashicorp/go-multierror and its transitive dependency github.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.

@ferhatelmas
Copy link
Contributor Author

ferhatelmas commented Nov 30, 2025

Are we supposed to run make licenses in the context of this PR?

Just in case, put it in a separate commit.

@williammartin
Copy link
Member

Hey @ferhatelmas,

Yeh, make licenses is required when module changes are made that affect the OSS licenses. There's a lint workflow that would check it if you hadn't done it.

@ferhatelmas
Copy link
Contributor Author

Sounds good, let's rebase and squash them together for your review then

@williammartin
Copy link
Member

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]>
@williammartin williammartin force-pushed the ferhat/drop-multierror branch from e624e8f to 376ea6b Compare December 2, 2025 13:54
Copy link
Member

@williammartin williammartin left a 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

@williammartin
Copy link
Member

Sweet, thanks for just getting this done!

@williammartin williammartin merged commit 7927c3f into cli:trunk Dec 2, 2025
11 checks passed
@ferhatelmas ferhatelmas deleted the ferhat/drop-multierror branch December 2, 2025 14:11
tmeijn pushed a commit to tmeijn/dotfiles that referenced this pull request Dec 12, 2025
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 [@&#8203;babakks](https://github.com/babakks) in [#&#8203;12170](cli/cli#12170)

##### πŸ“š Docs & Chores

- Refactor cfg out of CAPI Client by [@&#8203;williammartin](https://github.com/williammartin) in [#&#8203;12148](cli/cli#12148)
- Remove extra flag default from help usage by [@&#8203;andyfeller](https://github.com/andyfeller) in [#&#8203;12154](cli/cli#12154)
- Add PGP key rotation PoC by [@&#8203;babakks](https://github.com/babakks) in [#&#8203;12176](cli/cli#12176)
- Add Debian/Ubuntu to unofficial packages by [@&#8203;andyfeller](https://github.com/andyfeller) in [#&#8203;12191](cli/cli#12191)
- Error if go-licenses is not on the PATH by [@&#8203;williammartin](https://github.com/williammartin) in [#&#8203;12238](cli/cli#12238)
- refactor: drop multierror in favor of std by [@&#8203;ferhatelmas](https://github.com/ferhatelmas) in [#&#8203;12234](cli/cli#12234)

##### :dependabot: Dependencies

- chore(deps): bump golang.org/x/crypto from 0.43.0 to 0.45.0 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;12165](cli/cli#12165)
- chore(deps): bump actions/checkout from 5 to 6 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;12178](cli/cli#12178)
- chore(deps): bump google.golang.org/protobuf from 1.36.9 to 1.36.10 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;12037](cli/cli#12037)
- chore(deps): bump golangci/golangci-lint-action from 9.0.0 to 9.1.0 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;12189](cli/cli#12189)
- chore(deps): bump github.com/theupdateframework/go-tuf/v2 from 2.2.0 to 2.3.0 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;12100](cli/cli#12100)
- chore(deps): bump github.com/gabriel-vasile/mimetype from 1.4.10 to 1.4.11 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;12051](cli/cli#12051)
- chore(deps): bump google.golang.org/grpc from 1.75.0 to 1.76.0 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;11972](cli/cli#11972)
- chore(deps): bump github.com/charmbracelet/huh from 0.7.0 to 0.8.0 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;11971](cli/cli#11971)
- Bump Go to 1.25.4 by [@&#8203;github-actions](https://github.com/github-actions)\[bot] in [#&#8203;12104](cli/cli#12104)
- chore(deps): bump github.com/gdamore/tcell/v2 from 2.9.0 to 2.13.1 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;12246](cli/cli#12246)
- chore(deps): bump github.com/hashicorp/go-version from 1.7.0 to 1.8.0 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;12247](cli/cli#12247)
- chore(deps): bump github.com/google/go-containerregistry from 0.20.6 to 0.20.7 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;12245](cli/cli#12245)
- Bump Go to 1.25.5 by [@&#8203;github-actions](https://github.com/github-actions)\[bot] in [#&#8203;12250](cli/cli#12250)
- Bump dev-tunnels SDK 0.1.13 to 0.1.19 by [@&#8203;sam-byng](https://github.com/sam-byng) in [#&#8203;12285](cli/cli#12285)

#### New Contributors

- [@&#8203;ferhatelmas](https://github.com/ferhatelmas) made their first contribution in [#&#8203;12234](cli/cli#12234)
- [@&#8203;sam-byng](https://github.com/sam-byng) made their first contribution in [#&#8203;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-->
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

external pull request originating outside of the CLI core team

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants