Update mattermost library (#2152)

* Update mattermost library

* Fix linting
This commit is contained in:
Wim
2024-05-24 23:08:09 +02:00
committed by GitHub
parent 65d78e38af
commit d16645c952
1003 changed files with 89451 additions and 114025 deletions

View File

@@ -1,5 +0,0 @@
language: go
sudo: false
before_script:
- go vet ./...

View File

@@ -1,6 +1,47 @@
# merror
[![GoDoc](https://godoc.org/github.com/wiggin77/merror?status.svg)](https://godoc.org/github.com/wiggin77/merror)
[![Build Status](https://travis-ci.org/wiggin77/merror.svg?branch=master)](https://travis-ci.org/wiggin77/merror)
![Build Status](https://github.com/wiggin77/merror/actions/workflows/ci.yml/badge.svg?event=push)
Multiple Error aggregator for Go.
## Usage
```go
func foo() error {
merr := merror.New()
if err := DoSomething(); err != nil {
merr.Append(err)
}
return merr.ErrorOrNil()
}
```
A bounded `merror` can be used to guard against memory ballooning.
```go
func bar() error {
merr := merror.NewWithCap(10)
for i := 0; i < 15; i++ {
if err := DoSomething(); err != nil {
merr.Append(err)
}
}
fmt.Printf("Len: %d, Overflow: %d", merr.Len(), merr.Overflow())
// Len: 10, Overflow: 5
return merr.ErrorOrNil()
}
```
## errors.Is
If any of the errors appended to a `merror` match the target error passed to `errors.Is(err, target error)` then true is returned.
## errors.As
If any of the errors appended to a `merror` match the target type passed to `errors.As(err error, target any)` then true is returned and the target is set to the matching error.

25
vendor/github.com/wiggin77/merror/append.go generated vendored Normal file
View File

@@ -0,0 +1,25 @@
package merror
// Append an error to a multi-error.
// If `to` is `nil` it will just assign `err`.
// If `to` is not a `*MError` it will create a new `*MError` and append both errors.
// If `err` is `nil` it will just return `to`.
// Otherwise it will just append to the existing `*MError`.
func Append(to, err error) error {
if err == nil {
return to
}
if to == nil {
return err
}
if merr, ok := to.(*MError); ok {
merr.Append(err)
return merr
}
merr := New()
merr.Append(to)
merr.Append(err)
return merr
}

View File

@@ -1,6 +1,9 @@
package merror
import "sync"
import (
"errors"
"sync"
)
// MError represents zero or more errors that can be
// accumulated via the `Append` method.
@@ -34,18 +37,20 @@ func NewWithCap(cap int) *MError {
}
// Append adds an error to the aggregated error list.
func (me *MError) Append(err error) {
if err == nil {
func (me *MError) Append(errs ...error) {
if len(errs) == 0 {
return
}
me.mux.Lock()
defer me.mux.Unlock()
if me.cap > 0 && len(me.errors) >= me.cap {
me.overflow++
} else {
me.errors = append(me.errors, err)
for _, err := range errs {
if me.cap > 0 && len(me.errors) >= me.cap {
me.overflow++
} else {
me.errors = append(me.errors, err)
}
}
}
@@ -118,3 +123,29 @@ func (me *MError) Error() string {
}
return f(me)
}
func (me *MError) Is(target error) bool {
me.mux.RLock()
defer me.mux.RUnlock()
for _, err := range me.errors {
if errors.Is(err, target) {
return true
}
}
return false
}
func (me *MError) As(target interface{}) bool {
me.mux.RLock()
defer me.mux.RUnlock()
for _, err := range me.errors {
if errors.As(err, target) {
return true
}
}
return false
}