Kaynağa Gözat

Merge pull request #605 from Morganamilo/fix#604

Ensure devel packages exist when updating
Anna 6 yıl önce
ebeveyn
işleme
714556fd4a
1 değiştirilmiş dosya ile 32 ekleme ve 32 silme
  1. 32 32
      upgrade.go

+ 32 - 32
upgrade.go

@@ -121,7 +121,7 @@ func upList(warnings *aurWarnings) (aurUp upSlice, repoUp upSlice, err error) {
 	var repoErr error
 	var aurErr error
 
-	pkgdata := make(map[string]*rpc.Pkg)
+	aurdata := make(map[string]*rpc.Pkg)
 
 	if mode == ModeAny || mode == ModeRepo {
 		fmt.Println(bold(cyan("::") + bold(" Searching databases for updates...")))
@@ -134,25 +134,34 @@ func upList(warnings *aurWarnings) (aurUp upSlice, repoUp upSlice, err error) {
 
 	if mode == ModeAny || mode == ModeAUR {
 		fmt.Println(bold(cyan("::") + bold(" Searching AUR for updates...")))
-		wg.Add(1)
-		go func() {
-			aurUp, aurErr = upAUR(remote, remoteNames, pkgdata, warnings)
-			wg.Done()
-		}()
 
-		if config.Devel {
-			fmt.Println(bold(cyan("::") + bold(" Checking development packages...")))
+		var _aurdata []*rpc.Pkg
+		_aurdata, aurErr = aurInfo(remoteNames, warnings)
+		if aurErr == nil {
+			for _, pkg := range _aurdata {
+				aurdata[pkg.Name] = pkg
+			}
+
 			wg.Add(1)
 			go func() {
-				develUp = upDevel(remote)
+				aurUp, aurErr = upAUR(remote, aurdata)
 				wg.Done()
 			}()
+
+			if config.Devel {
+				fmt.Println(bold(cyan("::") + bold(" Checking development packages...")))
+				wg.Add(1)
+				go func() {
+					develUp = upDevel(remote, aurdata)
+					wg.Done()
+				}()
+			}
 		}
 	}
 
 	wg.Wait()
 
-	printLocalNewerThanAUR(remote, pkgdata)
+	printLocalNewerThanAUR(remote, aurdata)
 
 	errs := make([]string, 0)
 	for _, e := range []error{repoErr, aurErr} {
@@ -183,7 +192,7 @@ func upList(warnings *aurWarnings) (aurUp upSlice, repoUp upSlice, err error) {
 	return aurUp, repoUp, err
 }
 
-func upDevel(remote []alpm.Package) (toUpgrade upSlice) {
+func upDevel(remote []alpm.Package, aurdata map[string]*rpc.Pkg) (toUpgrade upSlice) {
 	toUpdate := make([]alpm.Package, 0)
 	toRemove := make([]string, 0)
 
@@ -195,12 +204,14 @@ func upDevel(remote []alpm.Package) (toUpgrade upSlice) {
 		defer wg.Done()
 
 		if e.needsUpdate() {
-			for _, pkg := range remote {
-				if pkg.Name() == vcsName {
-					mux1.Lock()
-					toUpdate = append(toUpdate, pkg)
-					mux1.Unlock()
-					return
+			if _, ok := aurdata[vcsName]; ok {
+				for _, pkg := range remote {
+					if pkg.Name() == vcsName {
+						mux1.Lock()
+						toUpdate = append(toUpdate, pkg)
+						mux1.Unlock()
+						return
+					}
 				}
 			}
 
@@ -231,22 +242,11 @@ func upDevel(remote []alpm.Package) (toUpgrade upSlice) {
 
 // upAUR gathers foreign packages and checks if they have new versions.
 // Output: Upgrade type package list.
-func upAUR(
-	remote []alpm.Package, remoteNames []string,
-	pkgdata map[string]*rpc.Pkg, warnings *aurWarnings) (upSlice, error) {
-
+func upAUR(remote []alpm.Package, aurdata map[string]*rpc.Pkg) (upSlice, error) {
 	toUpgrade := make(upSlice, 0)
-	_pkgdata, err := aurInfo(remoteNames, warnings)
-	if err != nil {
-		return nil, err
-	}
-
-	for _, pkg := range _pkgdata {
-		pkgdata[pkg.Name] = pkg
-	}
 
 	for _, pkg := range remote {
-		aurPkg, ok := pkgdata[pkg.Name()]
+		aurPkg, ok := aurdata[pkg.Name()]
 		if !ok {
 			continue
 		}
@@ -274,9 +274,9 @@ func printIgnoringPackage(pkg alpm.Package, newPkgVersion string) {
 }
 
 func printLocalNewerThanAUR(
-	remote []alpm.Package, pkgdata map[string]*rpc.Pkg) {
+	remote []alpm.Package, aurdata map[string]*rpc.Pkg) {
 	for _, pkg := range remote {
-		aurPkg, ok := pkgdata[pkg.Name()]
+		aurPkg, ok := aurdata[pkg.Name()]
 		if !ok {
 			continue
 		}