From 1e01eafb43c8f4d951512c78c7c860929014706f Mon Sep 17 00:00:00 2001 From: morganamilo Date: Thu, 22 Mar 2018 18:23:20 +0000 Subject: [PATCH] Separate gendb from install --- cmd.go | 3 --- dependencies.go | 22 +++++++++++++++------- install.go | 23 ++++------------------- vcs.go | 37 ++++++++++++++++++++++++++++++++----- 4 files changed, 51 insertions(+), 34 deletions(-) diff --git a/cmd.go b/cmd.go index 526eabed..d58f4d10 100644 --- a/cmd.go +++ b/cmd.go @@ -288,9 +288,6 @@ func handleYay() (err error) { usage() } else if cmdArgs.existsArg("gendb") { err = createDevelDB() - if err != nil { - return - } } else if cmdArgs.existsArg("c", "clean") { err = cleanDependencies() } else if len(cmdArgs.targets) > 0 { diff --git a/dependencies.go b/dependencies.go index 432893b2..5edd406a 100644 --- a/dependencies.go +++ b/dependencies.go @@ -70,6 +70,20 @@ func splitDbFromName(pkg string) (string, string) { return "", split[0] } +func getBases(pkgs map[string]*rpc.Pkg) map[string][]*rpc.Pkg { + bases := make(map[string][]*rpc.Pkg) + + for _, pkg := range pkgs { + _, ok := bases[pkg.PackageBase] + if !ok { + bases[pkg.PackageBase] = make([]*rpc.Pkg, 0) + } + bases[pkg.PackageBase] = append(bases[pkg.PackageBase], pkg) + } + + return bases +} + // Step two of dependency resolving. We already have all the information on the // packages we need, now it's just about ordering them correctly. // pkgs is a list of targets, the packages we want to install. Dependencies are @@ -105,13 +119,7 @@ func getDepCatagories(pkgs []string, dt *depTree) (*depCatagories, error) { dc := makeDependCatagories() seen := make(stringSet) - for _, pkg := range dt.Aur { - _, ok := dc.Bases[pkg.PackageBase] - if !ok { - dc.Bases[pkg.PackageBase] = make([]*rpc.Pkg, 0) - } - dc.Bases[pkg.PackageBase] = append(dc.Bases[pkg.PackageBase], pkg) - } + dc.Bases = getBases(dt.Aur) for _, pkg := range pkgs { _, name := splitDbFromName(pkg) diff --git a/install.go b/install.go index 6af06e25..62fa0a1b 100644 --- a/install.go +++ b/install.go @@ -125,11 +125,9 @@ func install(parser *arguments) error { hasAur = len(dc.Aur) != 0 fmt.Println() - if !parser.existsArg("gendb") { - err = checkForAllConflicts(dc) - if err != nil { - return err - } + err = checkForAllConflicts(dc) + if err != nil { + return err } if len(dc.MakeOnly) > 0 { @@ -162,19 +160,6 @@ func install(parser *arguments) error { return err } - if arguments.existsArg("gendb") { - for _, pkg := range dc.Aur { - pkgbuild := srcinfosStale[pkg.PackageBase] - - for _, pkg := range dc.Bases[pkg.PackageBase] { - updateVCSData(pkg.Name, pkgbuild.Source) - } - } - - fmt.Println(bold(green(arrow + " GenDB finished. No packages were installed"))) - return nil - } - incompatable, err = getIncompatable(dc.Aur, srcinfosStale, dc.Bases) if err != nil { return err @@ -186,7 +171,7 @@ func install(parser *arguments) error { } } - if !parser.existsArg("gendb") && (len(arguments.targets) > 0 || arguments.existsArg("u")) { + if len(arguments.targets) > 0 || arguments.existsArg("u") { err := passToPacman(arguments) if err != nil { return fmt.Errorf("Error installing repo packages") diff --git a/vcs.go b/vcs.go index f6511c04..da30ef5b 100644 --- a/vcs.go +++ b/vcs.go @@ -3,10 +3,14 @@ package main import ( "bytes" "encoding/json" + "fmt" "os" "os/exec" "strings" "time" + + rpc "github.com/mikkeloscar/aur" + gopkg "github.com/mikkeloscar/gopkgbuild" ) // Info contains the last commit sha of a repo @@ -20,16 +24,39 @@ type shaInfo struct { // createDevelDB forces yay to create a DB of the existing development packages func createDevelDB() error { + infoMap := make(map[string]*rpc.Pkg) + srcinfosStale := make(map[string]*gopkg.PKGBUILD) + _, _, _, remoteNames, err := filterPackages() if err != nil { return err } - config.NoConfirm = true - arguments := makeArguments() - arguments.addArg("gendb") - arguments.addTarget(remoteNames...) - err = install(arguments) + info, err := aurInfo(remoteNames) + if err != nil { + return err + } + + for _, pkg := range info { + infoMap[pkg.Name] = pkg + } + + + bases := getBases(infoMap) + + downloadPkgBuilds(info, sliceToStringSet(remoteNames), bases) + err = parsesrcinfosFile(info, srcinfosStale, bases) + + for _, pkg := range info { + pkgbuild := srcinfosStale[pkg.PackageBase] + + for _, pkg := range bases[pkg.PackageBase] { + updateVCSData(pkg.Name, pkgbuild.Source) + } + } + + fmt.Println(bold(green(arrow + " GenDB finished. No packages were installed"))) + return err }