From 58240bdc3d8e5a31b5bc55ff6a07a618a1e5d77a Mon Sep 17 00:00:00 2001 From: morganamilo Date: Thu, 2 Aug 2018 16:05:43 +0100 Subject: [PATCH] Steal multierror from aurlib --- utils.go | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/utils.go b/utils.go index c9e9017e..3762dd56 100644 --- a/utils.go +++ b/utils.go @@ -2,6 +2,7 @@ package main import ( "fmt" + "sync" "unicode" ) @@ -128,3 +129,36 @@ func removeInvalidTargets(targets []string) []string { return filteredTargets } + +type MultiError struct { + Errors []error + mux sync.Mutex +} + +func (err *MultiError) Error() string { + str := "" + + for _, e := range err.Errors { + str += e.Error() + } + + return str +} + +func (err *MultiError) Add(e error) { + if e == nil { + return + } + + err.mux.Lock() + err.Errors = append(err.Errors, e) + err.mux.Unlock() +} + +func (err *MultiError) Return() error { + if len(err.Errors) > 0 { + return err + } + + return nil +}