mirror of
https://github.com/Jguer/yay
synced 2024-10-05 23:59:13 +00:00
fix(query): Respect --deps and --explicit.
This fixes #1283. yay --query --upgrades [--explicit|--deps] will not return same packages pacman does extended with AUR packages. yay --show --numberupgrades [--explicit|--deps] will also work.
This commit is contained in:
parent
fd9e2638f9
commit
9fc6d9c128
32
cmd.go
32
cmd.go
|
@ -16,6 +16,7 @@ import (
|
|||
"github.com/Jguer/yay/v10/pkg/query"
|
||||
"github.com/Jguer/yay/v10/pkg/settings"
|
||||
"github.com/Jguer/yay/v10/pkg/text"
|
||||
"github.com/Jguer/yay/v10/pkg/upgrade"
|
||||
"github.com/Jguer/yay/v10/pkg/vcs"
|
||||
)
|
||||
|
||||
|
@ -179,9 +180,32 @@ func handleCmd(cmdArgs *settings.Arguments, dbExecutor db.Executor) error {
|
|||
return fmt.Errorf(gotext.Get("unhandled operation"))
|
||||
}
|
||||
|
||||
func getFilter(cmdArgs *settings.Arguments) (upgrade.Filter, error) {
|
||||
deps, explicit := cmdArgs.ExistsArg("d", "deps"), cmdArgs.ExistsArg("e", "explicit")
|
||||
switch {
|
||||
case deps && explicit:
|
||||
return nil, fmt.Errorf(gotext.Get("invalid option: '--deps' and '--explicit' may not be used together"))
|
||||
case deps:
|
||||
return func(pkg upgrade.Upgrade) bool {
|
||||
return pkg.Reason == alpm.PkgReasonDepend
|
||||
}, nil
|
||||
case explicit:
|
||||
return func(pkg upgrade.Upgrade) bool {
|
||||
return pkg.Reason == alpm.PkgReasonExplicit
|
||||
}, nil
|
||||
}
|
||||
return func(pkg upgrade.Upgrade) bool {
|
||||
return true
|
||||
}, nil
|
||||
}
|
||||
|
||||
func handleQuery(cmdArgs *settings.Arguments, dbExecutor db.Executor) error {
|
||||
if cmdArgs.ExistsArg("u", "upgrades") {
|
||||
return printUpdateList(cmdArgs, dbExecutor, cmdArgs.ExistsDouble("u", "sysupgrade"))
|
||||
filter, err := getFilter(cmdArgs)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return printUpdateList(cmdArgs, dbExecutor, cmdArgs.ExistsDouble("u", "sysupgrade"), filter)
|
||||
}
|
||||
return config.Runtime.CmdRunner.Show(passToPacman(cmdArgs))
|
||||
}
|
||||
|
@ -208,7 +232,11 @@ func handlePrint(cmdArgs *settings.Arguments, dbExecutor db.Executor) error {
|
|||
fmt.Printf("%v", config)
|
||||
return nil
|
||||
case cmdArgs.ExistsArg("n", "numberupgrades"):
|
||||
return printNumberOfUpdates(dbExecutor, cmdArgs.ExistsDouble("u", "sysupgrade"))
|
||||
filter, err := getFilter(cmdArgs)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return printNumberOfUpdates(dbExecutor, cmdArgs.ExistsDouble("u", "sysupgrade"), filter)
|
||||
case cmdArgs.ExistsArg("w", "news"):
|
||||
double := cmdArgs.ExistsDouble("w", "news")
|
||||
quiet := cmdArgs.ExistsArg("q", "quiet")
|
||||
|
|
|
@ -119,7 +119,7 @@ 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"))
|
||||
aurUp, repoUp, err = upList(warnings, dbExecutor, cmdArgs.ExistsDouble("u", "sysupgrade"), func(upgrade.Upgrade) bool { return true })
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
|
|
@ -421,9 +421,11 @@ func (ae *AlpmExecutor) RepoUpgrades(enableDowngrade bool) (upgrade.UpSlice, err
|
|||
}
|
||||
_ = ae.handle.TransGetAdd().ForEach(func(pkg alpm.IPackage) error {
|
||||
localVer := "-"
|
||||
reason := alpm.PkgReasonExplicit
|
||||
|
||||
if localPkg := localDB.Pkg(pkg.Name()); localPkg != nil {
|
||||
localVer = localPkg.Version()
|
||||
reason = localPkg.Reason()
|
||||
}
|
||||
|
||||
slice = append(slice, upgrade.Upgrade{
|
||||
|
@ -431,6 +433,7 @@ func (ae *AlpmExecutor) RepoUpgrades(enableDowngrade bool) (upgrade.UpSlice, err
|
|||
Repository: pkg.DB().Name(),
|
||||
LocalVersion: localVer,
|
||||
RemoteVersion: pkg.Version(),
|
||||
Reason: reason,
|
||||
})
|
||||
return nil
|
||||
})
|
||||
|
|
|
@ -326,6 +326,7 @@ func isArg(arg string) bool {
|
|||
case "dbonly":
|
||||
case "absdir":
|
||||
case "noprogressbar":
|
||||
case "numberupgrades":
|
||||
case "noscriptlet":
|
||||
case "p", "print":
|
||||
case "print-format":
|
||||
|
|
|
@ -99,6 +99,7 @@ func UpAUR(remote []alpm.IPackage, aurdata map[string]*rpc.Pkg, timeUpdate bool)
|
|||
Repository: "aur",
|
||||
LocalVersion: pkg.Version(),
|
||||
RemoteVersion: aurPkg.Version,
|
||||
Reason: pkg.Reason(),
|
||||
})
|
||||
}
|
||||
}
|
||||
|
|
|
@ -6,14 +6,20 @@ import (
|
|||
|
||||
"github.com/Jguer/yay/v10/pkg/intrange"
|
||||
"github.com/Jguer/yay/v10/pkg/text"
|
||||
|
||||
alpm "github.com/Jguer/go-alpm/v2"
|
||||
)
|
||||
|
||||
// Filter decides if specific package should be included in theincluded in the results.
|
||||
type Filter func(Upgrade) bool
|
||||
|
||||
// Upgrade type describes a system upgrade.
|
||||
type Upgrade struct {
|
||||
Name string
|
||||
Repository string
|
||||
LocalVersion string
|
||||
RemoteVersion string
|
||||
Reason alpm.PkgReason
|
||||
}
|
||||
|
||||
func (u *Upgrade) StylizedNameWithRepository() string {
|
||||
|
|
9
print.go
9
print.go
|
@ -16,6 +16,7 @@ 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"
|
||||
)
|
||||
|
||||
// PrintSearch handles printing search results in a given format
|
||||
|
@ -183,11 +184,11 @@ func localStatistics(dbExecutor db.Executor) error {
|
|||
}
|
||||
|
||||
// TODO: Make it less hacky
|
||||
func printNumberOfUpdates(dbExecutor db.Executor, enableDowngrade bool) error {
|
||||
func printNumberOfUpdates(dbExecutor db.Executor, enableDowngrade bool, filter upgrade.Filter) error {
|
||||
warnings := query.NewWarnings()
|
||||
old := os.Stdout // keep backup of the real stdout
|
||||
os.Stdout = nil
|
||||
aurUp, repoUp, err := upList(warnings, dbExecutor, enableDowngrade)
|
||||
aurUp, repoUp, err := upList(warnings, dbExecutor, enableDowngrade, filter)
|
||||
os.Stdout = old // restoring the real stdout
|
||||
if err != nil {
|
||||
return err
|
||||
|
@ -198,7 +199,7 @@ func printNumberOfUpdates(dbExecutor db.Executor, enableDowngrade bool) error {
|
|||
}
|
||||
|
||||
// TODO: Make it less hacky
|
||||
func printUpdateList(cmdArgs *settings.Arguments, dbExecutor db.Executor, enableDowngrade bool) error {
|
||||
func printUpdateList(cmdArgs *settings.Arguments, dbExecutor db.Executor, enableDowngrade bool, filter upgrade.Filter) error {
|
||||
targets := stringset.FromSlice(cmdArgs.Targets)
|
||||
warnings := query.NewWarnings()
|
||||
old := os.Stdout // keep backup of the real stdout
|
||||
|
@ -209,7 +210,7 @@ func printUpdateList(cmdArgs *settings.Arguments, dbExecutor db.Executor, enable
|
|||
return err
|
||||
}
|
||||
|
||||
aurUp, repoUp, err := upList(warnings, dbExecutor, enableDowngrade)
|
||||
aurUp, repoUp, err := upList(warnings, dbExecutor, enableDowngrade, filter)
|
||||
os.Stdout = old // restoring the real stdout
|
||||
if err != nil {
|
||||
return err
|
||||
|
|
15
upgrade.go
15
upgrade.go
|
@ -20,8 +20,19 @@ import (
|
|||
"github.com/Jguer/yay/v10/pkg/upgrade"
|
||||
)
|
||||
|
||||
func filterUpdateList(list upgrade.UpSlice, filter upgrade.Filter) upgrade.UpSlice {
|
||||
tmp := list[:0]
|
||||
for _, pkg := range list {
|
||||
if filter(pkg) {
|
||||
tmp = append(tmp, pkg)
|
||||
}
|
||||
}
|
||||
return tmp
|
||||
}
|
||||
|
||||
// upList returns lists of packages to upgrade from each source.
|
||||
func upList(warnings *query.AURWarnings, dbExecutor db.Executor, enableDowngrade bool) (aurUp, repoUp upgrade.UpSlice, err error) {
|
||||
func upList(warnings *query.AURWarnings, dbExecutor db.Executor, enableDowngrade bool,
|
||||
filter upgrade.Filter) (aurUp, repoUp upgrade.UpSlice, err error) {
|
||||
remote, remoteNames := query.GetRemotePackages(dbExecutor)
|
||||
|
||||
var wg sync.WaitGroup
|
||||
|
@ -92,7 +103,7 @@ func upList(warnings *query.AURWarnings, dbExecutor db.Executor, enableDowngrade
|
|||
aurUp = develUp
|
||||
}
|
||||
|
||||
return aurUp, repoUp, errs.Return()
|
||||
return filterUpdateList(aurUp, filter), filterUpdateList(repoUp, filter), errs.Return()
|
||||
}
|
||||
|
||||
func printLocalNewerThanAUR(
|
||||
|
|
Loading…
Reference in a new issue