1
0
mirror of https://github.com/Jguer/yay synced 2024-07-03 08:51:44 +00:00

fix(pkgbuild_download): remove alpmHandle

This commit is contained in:
Jguer 2020-08-08 17:36:44 +01:00 committed by jguer
parent 0e2a02b512
commit 6b973c6bc5
No known key found for this signature in database
GPG Key ID: 6D6CC9BEA8556B35
4 changed files with 33 additions and 57 deletions

14
cmd.go
View File

@ -168,7 +168,7 @@ func handleCmd(cmdArgs *settings.Arguments, alpmHandle *alpm.Handle, dbExecutor
case "U", "upgrade":
return show(passToPacman(cmdArgs))
case "G", "getpkgbuild":
return handleGetpkgbuild(cmdArgs, alpmHandle)
return handleGetpkgbuild(cmdArgs, dbExecutor)
case "P", "show":
return handlePrint(cmdArgs, alpmHandle, dbExecutor)
case "Y", "--yay":
@ -260,8 +260,8 @@ func handleYay(cmdArgs *settings.Arguments, dbExecutor *db.AlpmExecutor) error {
return nil
}
func handleGetpkgbuild(cmdArgs *settings.Arguments, alpmHandle *alpm.Handle) error {
return getPkgbuilds(cmdArgs.Targets, alpmHandle, cmdArgs.ExistsArg("f", "force"))
func handleGetpkgbuild(cmdArgs *settings.Arguments, dbExecutor *db.AlpmExecutor) error {
return getPkgbuilds(cmdArgs.Targets, dbExecutor, cmdArgs.ExistsArg("f", "force"))
}
func handleYogurt(cmdArgs *settings.Arguments, dbExecutor *db.AlpmExecutor) error {
@ -278,7 +278,7 @@ func handleSync(cmdArgs *settings.Arguments, alpmHandle *alpm.Handle, dbExecutor
} else {
config.SearchMode = detailed
}
return syncSearch(targets)
return syncSearch(targets, dbExecutor)
}
if cmdArgs.ExistsArg("p", "print", "print-format") {
return show(passToPacman(cmdArgs))
@ -293,13 +293,13 @@ func handleSync(cmdArgs *settings.Arguments, alpmHandle *alpm.Handle, dbExecutor
return show(passToPacman(cmdArgs))
}
if cmdArgs.ExistsArg("i", "info") {
return syncInfo(cmdArgs, targets, alpmHandle)
return syncInfo(cmdArgs, targets, dbExecutor)
}
if cmdArgs.ExistsArg("u", "sysupgrade") {
return install(cmdArgs, config.Runtime.DBExecutor, false)
return install(cmdArgs, dbExecutor, false)
}
if len(cmdArgs.Targets) > 0 {
return install(cmdArgs, config.Runtime.DBExecutor, false)
return install(cmdArgs, dbExecutor, false)
}
if cmdArgs.ExistsArg("y", "refresh") {
return show(passToPacman(cmdArgs))

View File

@ -8,10 +8,10 @@ import (
"strings"
"sync"
alpm "github.com/Jguer/go-alpm"
"github.com/leonelquinteros/gotext"
"github.com/pkg/errors"
"github.com/Jguer/yay/v10/pkg/db"
"github.com/Jguer/yay/v10/pkg/dep"
"github.com/Jguer/yay/v10/pkg/multierror"
"github.com/Jguer/yay/v10/pkg/query"
@ -140,7 +140,7 @@ func gitMerge(path, name string) error {
return nil
}
func getPkgbuilds(pkgs []string, alpmHandle *alpm.Handle, force bool) error {
func getPkgbuilds(pkgs []string, dbExecutor *db.AlpmExecutor, force bool) error {
missing := false
wd, err := os.Getwd()
if err != nil {
@ -148,10 +148,7 @@ func getPkgbuilds(pkgs []string, alpmHandle *alpm.Handle, force bool) error {
}
pkgs = query.RemoveInvalidTargets(pkgs, config.Runtime.Mode)
aur, repo, err := packageSlices(pkgs, alpmHandle)
if err != nil {
return err
}
aur, repo := packageSlices(pkgs, dbExecutor)
for n := range aur {
_, pkg := text.SplitDBFromName(aur[n])
@ -164,7 +161,7 @@ func getPkgbuilds(pkgs []string, alpmHandle *alpm.Handle, force bool) error {
}
if len(repo) > 0 {
missing, err = getPkgbuildsfromABS(repo, wd, alpmHandle, force)
missing, err = getPkgbuildsfromABS(repo, wd, dbExecutor, force)
if err != nil {
return err
}
@ -212,7 +209,7 @@ func getPkgbuilds(pkgs []string, alpmHandle *alpm.Handle, force bool) error {
}
// GetPkgbuild downloads pkgbuild from the ABS.
func getPkgbuildsfromABS(pkgs []string, path string, alpmHandle *alpm.Handle, force bool) (bool, error) {
func getPkgbuildsfromABS(pkgs []string, path string, dbExecutor *db.AlpmExecutor, force bool) (bool, error) {
var wg sync.WaitGroup
var mux sync.Mutex
var errs multierror.MultiError
@ -220,28 +217,16 @@ func getPkgbuildsfromABS(pkgs []string, path string, alpmHandle *alpm.Handle, fo
missing := make([]string, 0)
downloaded := 0
dbList, err := alpmHandle.SyncDBs()
if err != nil {
return false, err
}
for _, pkgN := range pkgs {
var pkg *alpm.Package
var pkg db.RepoPackage
var err error
var url string
pkgDB, name := text.SplitDBFromName(pkgN)
if pkgDB != "" {
if db, errSync := alpmHandle.SyncDBByName(pkgDB); errSync == nil {
pkg = db.Pkg(name)
}
pkg = dbExecutor.PackageFromDB(name, pkgDB)
} else {
_ = dbList.ForEach(func(db alpm.DB) error {
if pkg = db.Pkg(name); pkg != nil {
return fmt.Errorf("")
}
return nil
})
pkg = dbExecutor.SyncSatisfier(name)
}
if pkg == nil {

View File

@ -240,7 +240,11 @@ func (ae *AlpmExecutor) SyncPackages(pkgNames ...string) []RepoPackage {
}
func (ae *AlpmExecutor) LocalPackage(pkgName string) RepoPackage {
return ae.localDB.Pkg(pkgName)
pkg := ae.localDB.Pkg(pkgName)
if pkg == nil {
return nil
}
return pkg
}
func (ae *AlpmExecutor) PackageFromDB(pkgName, dbName string) RepoPackage {

View File

@ -147,7 +147,7 @@ func narrowSearch(pkgS []string, sortS bool) (aurQuery, error) {
}
// SyncSearch presents a query to the local repos and to the AUR.
func syncSearch(pkgS []string) (err error) {
func syncSearch(pkgS []string, dbExecutor *db.AlpmExecutor) (err error) {
pkgS = query.RemoveInvalidTargets(pkgS, config.Runtime.Mode)
var aurErr error
var aq aurQuery
@ -157,23 +157,23 @@ func syncSearch(pkgS []string) (err error) {
aq, aurErr = narrowSearch(pkgS, true)
}
if config.Runtime.Mode == settings.ModeRepo || config.Runtime.Mode == settings.ModeAny {
pq = queryRepo(pkgS, config.Runtime.DBExecutor)
pq = queryRepo(pkgS, dbExecutor)
}
switch config.SortMode {
case settings.TopDown:
if config.Runtime.Mode == settings.ModeRepo || config.Runtime.Mode == settings.ModeAny {
pq.printSearch(config.Runtime.DBExecutor)
pq.printSearch(dbExecutor)
}
if config.Runtime.Mode == settings.ModeAUR || config.Runtime.Mode == settings.ModeAny {
aq.printSearch(1, config.Runtime.DBExecutor)
aq.printSearch(1, dbExecutor)
}
case settings.BottomUp:
if config.Runtime.Mode == settings.ModeAUR || config.Runtime.Mode == settings.ModeAny {
aq.printSearch(1, config.Runtime.DBExecutor)
aq.printSearch(1, dbExecutor)
}
if config.Runtime.Mode == settings.ModeRepo || config.Runtime.Mode == settings.ModeAny {
pq.printSearch(config.Runtime.DBExecutor)
pq.printSearch(dbExecutor)
}
default:
return errors.New(gotext.Get("invalid sort mode. Fix with yay -Y --bottomup --save"))
@ -188,14 +188,12 @@ func syncSearch(pkgS []string) (err error) {
}
// SyncInfo serves as a pacman -Si for repo packages and AUR packages.
func syncInfo(cmdArgs *settings.Arguments, pkgS []string, alpmHandle *alpm.Handle) error {
func syncInfo(cmdArgs *settings.Arguments, pkgS []string, dbExecutor *db.AlpmExecutor) error {
var info []*rpc.Pkg
var err error
missing := false
pkgS = query.RemoveInvalidTargets(pkgS, config.Runtime.Mode)
aurS, repoS, err := packageSlices(pkgS, alpmHandle)
if err != nil {
return err
}
aurS, repoS := packageSlices(pkgS, dbExecutor)
if len(aurS) != 0 {
noDB := make([]string, 0, len(aurS))
@ -252,12 +250,7 @@ func queryRepo(pkgInputN []string, dbExecutor *db.AlpmExecutor) repoQuery {
}
// PackageSlices separates an input slice into aur and repo slices
func packageSlices(toCheck []string, alpmHandle *alpm.Handle) (aur, repo []string, err error) {
dbList, err := alpmHandle.SyncDBs()
if err != nil {
return nil, nil, err
}
func packageSlices(toCheck []string, dbExecutor *db.AlpmExecutor) (aur, repo []string) {
for _, _pkg := range toCheck {
dbName, name := text.SplitDBFromName(_pkg)
found := false
@ -270,16 +263,10 @@ func packageSlices(toCheck []string, alpmHandle *alpm.Handle) (aur, repo []strin
continue
}
_ = dbList.ForEach(func(db alpm.DB) error {
if db.Pkg(name) != nil {
found = true
return fmt.Errorf("")
}
return nil
})
found = dbExecutor.SyncSatisfierExists(name)
if !found {
found = !dbList.FindGroupPkgs(name).Empty()
found = len(dbExecutor.PackagesFromGroup(name)) != 0
}
if found {
@ -289,7 +276,7 @@ func packageSlices(toCheck []string, alpmHandle *alpm.Handle) (aur, repo []strin
}
}
return aur, repo, nil
return aur, repo
}
// HangingPackages returns a list of packages installed as deps