Move MultiError to types package

This commit is contained in:
Jguer 2019-10-05 17:35:46 +01:00
parent fdcfeba902
commit 9e205eef4b
No known key found for this signature in database
GPG key ID: 6D6CC9BEA8556B35
6 changed files with 49 additions and 38 deletions

View file

@ -11,6 +11,7 @@ import (
"sync"
alpm "github.com/Jguer/go-alpm"
"github.com/Jguer/yay/v9/pkg/types"
)
// Decide what download method to use:
@ -224,7 +225,7 @@ func getPkgbuilds(pkgs []string) error {
func getPkgbuildsfromABS(pkgs []string, path string) (bool, error) {
var wg sync.WaitGroup
var mux sync.Mutex
var errs MultiError
var errs types.MultiError
names := make(map[string]string)
missing := make([]string, 0)
downloaded := 0

View file

@ -11,6 +11,7 @@ import (
alpm "github.com/Jguer/go-alpm"
"github.com/Jguer/yay/v9/pkg/completion"
"github.com/Jguer/yay/v9/pkg/types"
gosrc "github.com/Morganamilo/go-srcinfo"
)
@ -818,7 +819,7 @@ func downloadPkgbuilds(bases []Base, toSkip stringSet, buildDir string) (stringS
downloaded := 0
var wg sync.WaitGroup
var mux sync.Mutex
var errs MultiError
var errs types.MultiError
download := func(k int, base Base) {
defer wg.Done()

41
pkg/types/multierror.go Normal file
View file

@ -0,0 +1,41 @@
package types
import "sync"
// MultiError type handles error accumulation from goroutines
type MultiError struct {
Errors []error
mux sync.Mutex
}
// Error turns the MultiError structure into a string
func (err *MultiError) Error() string {
str := ""
for _, e := range err.Errors {
str += e.Error() + "\n"
}
return str[:len(str)-1]
}
// Add adds an error to the Multierror structure
func (err *MultiError) Add(e error) {
if e == nil {
return
}
err.mux.Lock()
err.Errors = append(err.Errors, e)
err.mux.Unlock()
}
// Return is used as a wrapper on return on wether to return the
// MultiError Structure if errors exist or nil instead of delivering an empty structure
func (err *MultiError) Return() error {
if len(err.Errors) > 0 {
return err
}
return nil
}

View file

@ -9,6 +9,7 @@ import (
"time"
alpm "github.com/Jguer/go-alpm"
"github.com/Jguer/yay/v9/pkg/types"
rpc "github.com/mikkeloscar/aur"
)
@ -478,7 +479,7 @@ func aurInfo(names []string, warnings *aurWarnings) ([]*rpc.Pkg, error) {
seen := make(map[string]int)
var mux sync.Mutex
var wg sync.WaitGroup
var errs MultiError
var errs types.MultiError
makeRequest := func(n, max int) {
defer wg.Done()

View file

@ -7,6 +7,7 @@ import (
"unicode"
alpm "github.com/Jguer/go-alpm"
"github.com/Jguer/yay/v9/pkg/types"
rpc "github.com/mikkeloscar/aur"
)
@ -120,7 +121,7 @@ func upList(warnings *aurWarnings) (upSlice, upSlice, error) {
var repoUp upSlice
var aurUp upSlice
var errs MultiError
var errs types.MultiError
aurdata := make(map[string]*rpc.Pkg)

View file

@ -2,7 +2,6 @@ package main
import (
"fmt"
"sync"
"unicode"
)
@ -129,36 +128,3 @@ 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() + "\n"
}
return str[:len(str)-1]
}
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
}