Selaa lähdekoodia

Filter out invalid tatgets instead of ignoring them

Invalid targets that occur when combining aur/foo with --repo or db/foo
with --aur. Instead of ignoring them, filter them out and give a warning
as it happens.
morganamilo 7 vuotta sitten
vanhempi
commit
444ccce925
3 muutettua tiedostoa jossa 35 lisäystä ja 16 poistoa
  1. 3 6
      depPool.go
  2. 9 10
      query.go
  3. 23 0
      utils.go

+ 3 - 6
depPool.go

@@ -84,6 +84,8 @@ func (dp *depPool) ResolveTargets(pkgs []string) error {
 	// call
 	aurTargets := make(stringSet)
 
+	pkgs = removeInvalidTargets(pkgs)
+
 	for _, pkg := range pkgs {
 		var err error
 		target := toTarget(pkg)
@@ -101,17 +103,12 @@ func (dp *depPool) ResolveTargets(pkgs []string) error {
 		var singleDb *alpm.Db
 
 		// aur/ prefix means we only check the aur
-		if target.Db == "aur" || (target.Db == "" && mode == ModeAUR) {
+		if target.Db == "aur" || mode == ModeAUR {
 			dp.Targets = append(dp.Targets, target)
 			aurTargets.set(target.DepString())
 			continue
 		}
 
-		if mode == ModeAUR {
-			dp.Targets = append(dp.Targets, target)
-			continue
-		}
-
 		// if theres a different priefix only look in that repo
 		if target.Db != "" {
 			singleDb, err = alpmHandle.SyncDbByName(target.Db)

+ 9 - 10
query.go

@@ -184,6 +184,8 @@ func syncSearch(pkgS []string) (err error) {
 // SyncInfo serves as a pacman -Si for repo packages and AUR packages.
 func syncInfo(pkgS []string) (err error) {
 	var info []*rpc.Pkg
+	missing := false
+	pkgS = removeInvalidTargets(pkgS)
 	aurS, repoS, err := packageSlices(pkgS)
 	if err != nil {
 		return
@@ -199,6 +201,7 @@ func syncInfo(pkgS []string) (err error) {
 
 		info, err = aurInfoPrint(noDb)
 		if err != nil {
+			missing = true
 			fmt.Println(err)
 		}
 	}
@@ -214,14 +217,18 @@ func syncInfo(pkgS []string) (err error) {
 		}
 	}
 
+	if len(aurS) != len(info) {
+		missing = true
+	}
+
 	if len(info) != 0 {
 		for _, pkg := range info {
 			PrintInfo(pkg)
 		}
 	}
 
-	if len(repoS)+len(aurS) != len(pkgS) {
-		return fmt.Errorf("Could not find all packages")
+	if missing {
+		err = fmt.Errorf("")
 	}
 
 	return
@@ -288,14 +295,6 @@ func packageSlices(toCheck []string) (aur []string, repo []string, err error) {
 		db, name := splitDbFromName(_pkg)
 		found := false
 
-		if db == "aur" && mode == ModeRepo {
-			continue
-		}
-
-		if db != "aur" && db != "" && mode == ModeAUR {
-			continue
-		}
-
 		if db == "aur" || mode == ModeAUR {
 			aur = append(aur, _pkg)
 			continue

+ 23 - 0
utils.go

@@ -1,6 +1,7 @@
 package main
 
 import (
+	"fmt"
 	"unicode"
 )
 
@@ -103,3 +104,25 @@ func stringSliceEqual(a, b []string) bool {
 
 	return true
 }
+
+func removeInvalidTargets(targets []string) []string {
+	filteredTargets := make([]string, 0)
+
+	for _, target := range targets {
+		db, _ := splitDbFromName(target)
+
+		if db == "aur" && mode == ModeRepo {
+			fmt.Printf("%s %s %s\n", bold(yellow(arrow)), cyan(target), bold("Can't use target with option --repo -- skipping"))
+			continue
+		}
+
+		if db != "aur" && db != "" && mode == ModeAUR {
+			fmt.Printf("%s %s %s\n", bold(yellow(arrow)), cyan(target), bold("Can't use target with option --aur -- skipping"))
+			continue
+		}
+
+		filteredTargets = append(filteredTargets, target)
+	}
+
+	return filteredTargets
+}