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

fix(pkgbuild): rebase pkgbuild fetching from nycex

This commit is contained in:
jguer 2020-12-11 01:13:26 +01:00
parent d9b440c929
commit a288dd754f
No known key found for this signature in database
GPG Key ID: 6D6CC9BEA8556B35
3 changed files with 55 additions and 22 deletions

4
cmd.go
View File

@ -217,8 +217,8 @@ func handlePrint(cmdArgs *settings.Arguments, dbExecutor db.Executor) (err error
err = completion.Show(dbExecutor, config.AURURL, config.Runtime.CompletionPath, config.CompletionInterval, false)
case cmdArgs.ExistsArg("s", "stats"):
err = localStatistics(dbExecutor)
case cmdArgs.existsArg("p", "pkgbuild"):
err = printPkgbuilds(cmdArgs.targets)
case cmdArgs.ExistsArg("p", "pkgbuild"):
err = printPkgbuilds(dbExecutor, cmdArgs.Targets)
default:
err = nil
}

View File

@ -9,6 +9,7 @@ import (
rpc "github.com/mikkeloscar/aur"
"github.com/Jguer/yay/v10/pkg/db"
"github.com/Jguer/yay/v10/pkg/multierror"
"github.com/Jguer/yay/v10/pkg/query"
"github.com/Jguer/yay/v10/pkg/settings"
"github.com/Jguer/yay/v10/pkg/stringset"
@ -266,3 +267,46 @@ outer:
return nil
}
func printPkgbuilds(dbExecutor db.Executor, pkgS []string) error {
var pkgbuilds []string
var localPkgbuilds []string
missing := false
pkgS = query.RemoveInvalidTargets(pkgS, config.Runtime.Mode)
aurS, repoS := packageSlices(pkgS, dbExecutor)
var err error
var errs multierror.MultiError
if len(aurS) != 0 {
noDB := make([]string, 0, len(aurS))
for _, pkg := range aurS {
_, name := text.SplitDBFromName(pkg)
noDB = append(noDB, name)
}
localPkgbuilds, err = aurPkgbuilds(noDB)
pkgbuilds = append(pkgbuilds, localPkgbuilds...)
errs.Add(err)
}
if len(repoS) != 0 {
localPkgbuilds, err = repoPkgbuilds(dbExecutor, repoS)
pkgbuilds = append(pkgbuilds, localPkgbuilds...)
errs.Add(err)
}
if len(aurS)+len(repoS) != len(pkgbuilds) {
missing = true
}
if len(pkgbuilds) != 0 {
for _, pkgbuild := range pkgbuilds {
fmt.Print(pkgbuild)
}
}
if missing {
err = fmt.Errorf("Missing packages")
}
return err
}

View File

@ -9,6 +9,7 @@ import (
"os"
"sort"
"strings"
"sync"
alpm "github.com/Jguer/go-alpm/v2"
"github.com/leonelquinteros/gotext"
@ -445,34 +446,22 @@ func aurPkgbuilds(names []string) ([]string, error) {
return pkgbuilds, nil
}
func repoPkgbuilds(names []string) ([]string, error) {
func repoPkgbuilds(dbExecutor db.Executor, names []string) ([]string, error) {
pkgbuilds := make([]string, 0, len(names))
var mux sync.Mutex
var wg sync.WaitGroup
var errs multierror.MultiError
dbList, dbErr := alpmHandle.SyncDBs()
if dbErr != nil {
return nil, dbErr
}
dbSlice := dbList.Slice()
makeRequest := func(full string) {
var pkg alpm.IPackage
defer wg.Done()
db, name := splitDBFromName(full)
db, name := text.SplitDBFromName(full)
if db == "" {
var pkg *alpm.Package
for _, alpmDB := range dbSlice {
if pkg = alpmDB.Pkg(name); pkg != nil {
db = alpmDB.Name()
name = pkg.Base()
if name == "" {
name = pkg.Name()
}
}
}
if db != "" {
pkg = dbExecutor.SatisfierFromDB(name, db)
} else {
pkg = dbExecutor.SyncSatisfier(name)
}
values := url.Values{}
@ -482,7 +471,7 @@ func repoPkgbuilds(names []string) ([]string, error) {
// TODO: Check existence with ls-remote
// https://git.archlinux.org/svntogit/packages.git
switch db {
switch pkg.DB().Name() {
case "core", "extra", "testing":
url = "https://git.archlinux.org/svntogit/packages.git/plain/trunk/PKGBUILD?"
case "community", "multilib", "community-testing", "multilib-testing":