Update mattermost library (#2152)
* Update mattermost library * Fix linting
This commit is contained in:
5
vendor/github.com/wiggin77/merror/.travis.yml
generated
vendored
5
vendor/github.com/wiggin77/merror/.travis.yml
generated
vendored
@@ -1,5 +0,0 @@
|
||||
language: go
|
||||
sudo: false
|
||||
before_script:
|
||||
- go vet ./...
|
||||
|
||||
43
vendor/github.com/wiggin77/merror/README.md
generated
vendored
43
vendor/github.com/wiggin77/merror/README.md
generated
vendored
@@ -1,6 +1,47 @@
|
||||
# merror
|
||||
|
||||
[](https://godoc.org/github.com/wiggin77/merror)
|
||||
[](https://travis-ci.org/wiggin77/merror)
|
||||

|
||||
|
||||
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
25
vendor/github.com/wiggin77/merror/append.go
generated
vendored
Normal 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
|
||||
}
|
||||
45
vendor/github.com/wiggin77/merror/merror.go
generated
vendored
45
vendor/github.com/wiggin77/merror/merror.go
generated
vendored
@@ -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
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user