浏览代码

fix(install): simplify sysupgrade

jguer 4 年之前
父节点
当前提交
7a280e0199
共有 2 个文件被更改,包括 30 次插入32 次删除
  1. 4 22
      install.go
  2. 26 10
      upgrade.go

+ 4 - 22
install.go

@@ -24,7 +24,6 @@ import (
 	"github.com/Jguer/yay/v10/pkg/settings"
 	"github.com/Jguer/yay/v10/pkg/stringset"
 	"github.com/Jguer/yay/v10/pkg/text"
-	"github.com/Jguer/yay/v10/pkg/upgrade"
 )
 
 const gitEmptyTree = "4b825dc642cb6eb9a060e54bf8d69288fbee4904"
@@ -66,9 +65,6 @@ func install(cmdArgs *settings.Arguments, dbExecutor db.Executor, ignoreProvider
 	var incompatible stringset.StringSet
 	var do *dep.Order
 
-	var aurUp upgrade.UpSlice
-	var repoUp upgrade.UpSlice
-
 	var srcinfos map[string]*gosrc.Srcinfo
 
 	warnings := query.NewWarnings()
@@ -119,28 +115,14 @@ func install(cmdArgs *settings.Arguments, dbExecutor db.Executor, ignoreProvider
 
 	// if we are doing -u also request all packages needing update
 	if cmdArgs.ExistsArg("u", "sysupgrade") {
-		aurUp, repoUp, err = upList(warnings, dbExecutor, cmdArgs.ExistsDouble("u", "sysupgrade"), func(upgrade.Upgrade) bool { return true })
-		if err != nil {
-			return err
-		}
-
-		warnings.Print()
-
-		ignore, aurUp, errUp := upgradePkgs(aurUp, repoUp)
+		ignore, targets, errUp := sysupgradeTargets(dbExecutor, cmdArgs.ExistsDouble("u", "sysupgrade"))
 		if errUp != nil {
 			return errUp
 		}
 
-		for _, up := range repoUp {
-			if !ignore.Get(up.Name) {
-				requestTargets = append(requestTargets, up.Name)
-				cmdArgs.AddTarget(up.Name)
-			}
-		}
-
-		for up := range aurUp {
-			requestTargets = append(requestTargets, "aur/"+up)
-			cmdArgs.AddTarget("aur/" + up)
+		for _, up := range targets {
+			cmdArgs.AddTarget(up)
+			requestTargets = append(requestTargets, up)
 		}
 
 		if len(ignore) > 0 {

+ 26 - 10
upgrade.go

@@ -139,22 +139,22 @@ func isDevelPackage(pkg alpm.IPackage) bool {
 	return isDevelName(pkg.Name()) || isDevelName(pkg.Base())
 }
 
-// upgradePkgs handles updating the cache and installing updates.
-func upgradePkgs(aurUp, repoUp upgrade.UpSlice) (ignore, aurNames stringset.StringSet, err error) {
-	ignore = make(stringset.StringSet)
-	aurNames = make(stringset.StringSet)
+// upgradePkgsMenu handles updating the cache and installing updates.
+func upgradePkgsMenu(aurUp, repoUp upgrade.UpSlice) (stringset.StringSet, []string, error) {
+	ignore := make(stringset.StringSet)
+	targets := []string{}
 
 	allUpLen := len(repoUp) + len(aurUp)
 	if allUpLen == 0 {
-		return ignore, aurNames, nil
+		return ignore, nil, nil
 	}
 
 	if !config.UpgradeMenu {
 		for _, pkg := range aurUp {
-			aurNames.Set(pkg.Name)
+			targets = append(targets, pkg.Name)
 		}
 
-		return ignore, aurNames, nil
+		return ignore, targets, nil
 	}
 
 	sort.Sort(repoUp)
@@ -182,10 +182,12 @@ func upgradePkgs(aurUp, repoUp upgrade.UpSlice) (ignore, aurNames stringset.Stri
 		}
 
 		if isInclude && !include.Get(len(repoUp)-i+len(aurUp)) {
+			targets = append(targets, pkg.Name)
 			continue
 		}
 
 		if !isInclude && (exclude.Get(len(repoUp)-i+len(aurUp)) || otherExclude.Get(pkg.Repository)) {
+			targets = append(targets, pkg.Name)
 			continue
 		}
 
@@ -198,13 +200,27 @@ func upgradePkgs(aurUp, repoUp upgrade.UpSlice) (ignore, aurNames stringset.Stri
 		}
 
 		if isInclude && !include.Get(len(aurUp)-i) {
-			aurNames.Set(pkg.Name)
+			targets = append(targets, "aur/"+pkg.Name)
 		}
 
 		if !isInclude && (exclude.Get(len(aurUp)-i) || otherExclude.Get(pkg.Repository)) {
-			aurNames.Set(pkg.Name)
+			targets = append(targets, "aur/"+pkg.Name)
 		}
 	}
 
-	return ignore, aurNames, err
+	return ignore, targets, err
+}
+
+// Targets for sys upgrade
+func sysupgradeTargets(dbExecutor db.Executor, enableDowngrade bool) (stringset.StringSet, []string, error) {
+	warnings := query.NewWarnings()
+	aurUp, repoUp, err := upList(warnings, dbExecutor, enableDowngrade, func(upgrade.Upgrade) bool { return true })
+	if err != nil {
+		return nil, nil, err
+	}
+
+	warnings.Print()
+
+	ignore, targets, errUp := upgradePkgsMenu(aurUp, repoUp)
+	return ignore, targets, errUp
 }