Explorar el Código

Steal multierror from aurlib

morganamilo hace 6 años
padre
commit
58240bdc3d
Se han modificado 1 ficheros con 34 adiciones y 0 borrados
  1. 34 0
      utils.go

+ 34 - 0
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
+}