mirror of
https://github.com/ceph/ceph-csi.git
synced 2024-12-30 17:00:23 +00:00
91774fc936
Uses github.com/libopenstorage/secrets to communicate with Vault. This removes the need for maintaining our own limited Vault APIs. By adding the new dependency, several other packages got updated in the process. Unused indirect dependencies have been removed from go.mod. Signed-off-by: Niels de Vos <ndevos@redhat.com>
51 lines
1.0 KiB
Go
51 lines
1.0 KiB
Go
package mapstructure
|
|
|
|
import (
|
|
"errors"
|
|
"fmt"
|
|
"sort"
|
|
"strings"
|
|
)
|
|
|
|
// Error implements the error interface and can represents multiple
|
|
// errors that occur in the course of a single decode.
|
|
type Error struct {
|
|
Errors []string
|
|
}
|
|
|
|
func (e *Error) Error() string {
|
|
points := make([]string, len(e.Errors))
|
|
for i, err := range e.Errors {
|
|
points[i] = fmt.Sprintf("* %s", err)
|
|
}
|
|
|
|
sort.Strings(points)
|
|
return fmt.Sprintf(
|
|
"%d error(s) decoding:\n\n%s",
|
|
len(e.Errors), strings.Join(points, "\n"))
|
|
}
|
|
|
|
// WrappedErrors implements the errwrap.Wrapper interface to make this
|
|
// return value more useful with the errwrap and go-multierror libraries.
|
|
func (e *Error) WrappedErrors() []error {
|
|
if e == nil {
|
|
return nil
|
|
}
|
|
|
|
result := make([]error, len(e.Errors))
|
|
for i, e := range e.Errors {
|
|
result[i] = errors.New(e)
|
|
}
|
|
|
|
return result
|
|
}
|
|
|
|
func appendErrors(errors []string, err error) []string {
|
|
switch e := err.(type) {
|
|
case *Error:
|
|
return append(errors, e.Errors...)
|
|
default:
|
|
return append(errors, e.Error())
|
|
}
|
|
}
|