From f4aa7f79337fe777b9be04d44b35d4308da59a95 Mon Sep 17 00:00:00 2001 From: morganamilo Date: Wed, 25 Jul 2018 02:04:17 +0100 Subject: [PATCH] Use alpm_sync_sysupgrade for uprepo This allows us to support the Upgrade Usage option as well as relying on alpm's logic instead of coming up with out own. It is possible that this could lead to showing replaces in the upgrade menu. --- upgrade.go | 43 +++++++++++++++++++++++++++++-------------- 1 file changed, 29 insertions(+), 14 deletions(-) diff --git a/upgrade.go b/upgrade.go index 71fa8df5..5e81ccaf 100644 --- a/upgrade.go +++ b/upgrade.go @@ -297,23 +297,38 @@ func printLocalNewerThanAUR( // upRepo gathers local packages and checks if they have new versions. // Output: Upgrade type package list. func upRepo(local []alpm.Package) (upSlice, error) { - dbList, err := alpmHandle.SyncDbs() - if err != nil { - return nil, err - } - slice := upSlice{} - for _, pkg := range local { - newPkg := pkg.NewVersion(dbList) - if newPkg != nil { - if pkg.ShouldIgnore() { - printIgnoringPackage(pkg, newPkg.Version()) - } else { - slice = append(slice, upgrade{pkg.Name(), newPkg.DB().Name(), pkg.Version(), newPkg.Version()}) - } - } + localDB, err := alpmHandle.LocalDb() + if err != nil { + return slice, err } + + err = alpmHandle.TransInit(alpm.TransFlagNoLock) + if err != nil { + return slice, err + } + + defer alpmHandle.TransRelease() + + alpmHandle.SyncSysupgrade(cmdArgs.existsDouble("u", "sysupgrade")) + alpmHandle.TransGetAdd().ForEach(func(pkg alpm.Package) error { + localPkg, err := localDB.PkgByName(pkg.Name()) + localVer := "-" + + if err == nil { + localVer = localPkg.Version() + } + + slice = append(slice, upgrade{ + pkg.Name(), + pkg.DB().Name(), + localVer, + pkg.Version(), + }) + return nil + }) + return slice, nil }