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) } }