1
0
mirror of https://github.com/Jguer/yay synced 2024-07-08 20:36:24 +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": case "U", "upgrade":
return show(passToPacman(cmdArgs)) return show(passToPacman(cmdArgs))
case "G", "getpkgbuild": case "G", "getpkgbuild":
return handleGetpkgbuild(cmdArgs, alpmHandle) return handleGetpkgbuild(cmdArgs, dbExecutor)
case "P", "show": case "P", "show":
return handlePrint(cmdArgs, alpmHandle, dbExecutor) return handlePrint(cmdArgs, alpmHandle, dbExecutor)
case "Y", "--yay": case "Y", "--yay":
@ -260,8 +260,8 @@ func handleYay(cmdArgs *settings.Arguments, dbExecutor *db.AlpmExecutor) error {
return nil return nil
} }
func handleGetpkgbuild(cmdArgs *settings.Arguments, alpmHandle *alpm.Handle) error { func handleGetpkgbuild(cmdArgs *settings.Arguments, dbExecutor *db.AlpmExecutor) error {
return getPkgbuilds(cmdArgs.Targets, alpmHandle, cmdArgs.ExistsArg("f", "force")) return getPkgbuilds(cmdArgs.Targets, dbExecutor, cmdArgs.ExistsArg("f", "force"))
} }
func handleYogurt(cmdArgs *settings.Arguments, dbExecutor *db.AlpmExecutor) error { func handleYogurt(cmdArgs *settings.Arguments, dbExecutor *db.AlpmExecutor) error {
@ -278,7 +278,7 @@ func handleSync(cmdArgs *settings.Arguments, alpmHandle *alpm.Handle, dbExecutor
} else { } else {
config.SearchMode = detailed config.SearchMode = detailed
} }
return syncSearch(targets) return syncSearch(targets, dbExecutor)
} }
if cmdArgs.ExistsArg("p", "print", "print-format") { if cmdArgs.ExistsArg("p", "print", "print-format") {
return show(passToPacman(cmdArgs)) return show(passToPacman(cmdArgs))
@ -293,13 +293,13 @@ func handleSync(cmdArgs *settings.Arguments, alpmHandle *alpm.Handle, dbExecutor
return show(passToPacman(cmdArgs)) return show(passToPacman(cmdArgs))
} }
if cmdArgs.ExistsArg("i", "info") { if cmdArgs.ExistsArg("i", "info") {
return syncInfo(cmdArgs, targets, alpmHandle) return syncInfo(cmdArgs, targets, dbExecutor)
} }
if cmdArgs.ExistsArg("u", "sysupgrade") { if cmdArgs.ExistsArg("u", "sysupgrade") {
return install(cmdArgs, config.Runtime.DBExecutor, false) return install(cmdArgs, dbExecutor, false)
} }
if len(cmdArgs.Targets) > 0 { if len(cmdArgs.Targets) > 0 {
return install(cmdArgs, config.Runtime.DBExecutor, false) return install(cmdArgs, dbExecutor, false)
} }
if cmdArgs.ExistsArg("y", "refresh") { if cmdArgs.ExistsArg("y", "refresh") {
return show(passToPacman(cmdArgs)) return show(passToPacman(cmdArgs))

View File

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

View File

@ -240,7 +240,11 @@ func (ae *AlpmExecutor) SyncPackages(pkgNames ...string) []RepoPackage {
} }
func (ae *AlpmExecutor) LocalPackage(pkgName 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 { 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. // 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) pkgS = query.RemoveInvalidTargets(pkgS, config.Runtime.Mode)
var aurErr error var aurErr error
var aq aurQuery var aq aurQuery
@ -157,23 +157,23 @@ func syncSearch(pkgS []string) (err error) {
aq, aurErr = narrowSearch(pkgS, true) aq, aurErr = narrowSearch(pkgS, true)
} }
if config.Runtime.Mode == settings.ModeRepo || config.Runtime.Mode == settings.ModeAny { if config.Runtime.Mode == settings.ModeRepo || config.Runtime.Mode == settings.ModeAny {
pq = queryRepo(pkgS, config.Runtime.DBExecutor) pq = queryRepo(pkgS, dbExecutor)
} }
switch config.SortMode { switch config.SortMode {
case settings.TopDown: case settings.TopDown:
if config.Runtime.Mode == settings.ModeRepo || config.Runtime.Mode == settings.ModeAny { 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 { if config.Runtime.Mode == settings.ModeAUR || config.Runtime.Mode == settings.ModeAny {
aq.printSearch(1, config.Runtime.DBExecutor) aq.printSearch(1, dbExecutor)
} }
case settings.BottomUp: case settings.BottomUp:
if config.Runtime.Mode == settings.ModeAUR || config.Runtime.Mode == settings.ModeAny { 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 { if config.Runtime.Mode == settings.ModeRepo || config.Runtime.Mode == settings.ModeAny {
pq.printSearch(config.Runtime.DBExecutor) pq.printSearch(dbExecutor)
} }
default: default:
return errors.New(gotext.Get("invalid sort mode. Fix with yay -Y --bottomup --save")) 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. // 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 info []*rpc.Pkg
var err error
missing := false missing := false
pkgS = query.RemoveInvalidTargets(pkgS, config.Runtime.Mode) pkgS = query.RemoveInvalidTargets(pkgS, config.Runtime.Mode)
aurS, repoS, err := packageSlices(pkgS, alpmHandle) aurS, repoS := packageSlices(pkgS, dbExecutor)
if err != nil {
return err
}
if len(aurS) != 0 { if len(aurS) != 0 {
noDB := make([]string, 0, len(aurS)) 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 // PackageSlices separates an input slice into aur and repo slices
func packageSlices(toCheck []string, alpmHandle *alpm.Handle) (aur, repo []string, err error) { func packageSlices(toCheck []string, dbExecutor *db.AlpmExecutor) (aur, repo []string) {
dbList, err := alpmHandle.SyncDBs()
if err != nil {
return nil, nil, err
}
for _, _pkg := range toCheck { for _, _pkg := range toCheck {
dbName, name := text.SplitDBFromName(_pkg) dbName, name := text.SplitDBFromName(_pkg)
found := false found := false
@ -270,16 +263,10 @@ func packageSlices(toCheck []string, alpmHandle *alpm.Handle) (aur, repo []strin
continue continue
} }
_ = dbList.ForEach(func(db alpm.DB) error { found = dbExecutor.SyncSatisfierExists(name)
if db.Pkg(name) != nil {
found = true
return fmt.Errorf("")
}
return nil
})
if !found { if !found {
found = !dbList.FindGroupPkgs(name).Empty() found = len(dbExecutor.PackagesFromGroup(name)) != 0
} }
if found { 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 // HangingPackages returns a list of packages installed as deps