package tool import ( "fmt" "runtime" multierror "github.com/hashicorp/go-multierror" "github.com/juju/errors" ) var Annotate = errors.Annotate func TraceError(err error, skip int) error { if err == nil { return nil } _, file, line, ok := runtime.Caller(skip + 1) if !ok { return err } return fmt.Errorf("%s:%d: %s", file, line, err) } func CombineError(errs ...error) error { return multierror.Append(&multierror.Error{}, errs...).ErrorOrNil() } func SelectError(errs ...error) error { for _, err := range errs { if err != nil { return err } } return nil }