mirror of
https://github.com/letic/terraform-provider-google.git
synced 2024-09-19 09:39:59 +00:00
38 lines
794 B
Go
38 lines
794 B
Go
|
package multierror
|
||
|
|
||
|
import (
|
||
|
"fmt"
|
||
|
|
||
|
"github.com/hashicorp/errwrap"
|
||
|
)
|
||
|
|
||
|
// Prefix is a helper function that will prefix some text
|
||
|
// to the given error. If the error is a multierror.Error, then
|
||
|
// it will be prefixed to each wrapped error.
|
||
|
//
|
||
|
// This is useful to use when appending multiple multierrors
|
||
|
// together in order to give better scoping.
|
||
|
func Prefix(err error, prefix string) error {
|
||
|
if err == nil {
|
||
|
return nil
|
||
|
}
|
||
|
|
||
|
format := fmt.Sprintf("%s {{err}}", prefix)
|
||
|
switch err := err.(type) {
|
||
|
case *Error:
|
||
|
// Typed nils can reach here, so initialize if we are nil
|
||
|
if err == nil {
|
||
|
err = new(Error)
|
||
|
}
|
||
|
|
||
|
// Wrap each of the errors
|
||
|
for i, e := range err.Errors {
|
||
|
err.Errors[i] = errwrap.Wrapf(format, e)
|
||
|
}
|
||
|
|
||
|
return err
|
||
|
default:
|
||
|
return errwrap.Wrapf(format, err)
|
||
|
}
|
||
|
}
|