Procházet zdrojové kódy

Move MultiError to types package

Jguer před 5 roky
rodič
revize
9e205eef4b
6 změnil soubory, kde provedl 49 přidání a 38 odebrání
  1. 2 1
      download.go
  2. 2 1
      install.go
  3. 41 0
      pkg/types/multierror.go
  4. 2 1
      query.go
  5. 2 1
      upgrade.go
  6. 0 34
      utils.go

+ 2 - 1
download.go

@@ -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

+ 2 - 1
install.go

@@ -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 - 0
pkg/types/multierror.go

@@ -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
+}

+ 2 - 1
query.go

@@ -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()

+ 2 - 1
upgrade.go

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

+ 0 - 34
utils.go

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