From d51205194ee3f8a74e3f209616aa0bd3fa1fb45f Mon Sep 17 00:00:00 2001 From: morganamilo Date: Thu, 10 May 2018 14:36:38 +0100 Subject: [PATCH] Support skiping updates and showing warnings The warnings were moved down to after the upgrade menu, mainly because it is a lot easier to do this way, it may get moved back if it can be done in a non hacky way, --- depPool.go | 9 ++++----- install.go | 48 +++++++++++++++++------------------------------- 2 files changed, 21 insertions(+), 36 deletions(-) diff --git a/depPool.go b/depPool.go index 2c19fdc9..64bf815a 100644 --- a/depPool.go +++ b/depPool.go @@ -1,7 +1,6 @@ package main import ( - "fmt" "sort" "strings" "sync" @@ -72,7 +71,7 @@ func makeDepPool() (*depPool, error) { make([]string, 0), localDb, syncDb, - &aurWarnings{}, + nil, } return dp, nil @@ -100,7 +99,6 @@ func (dp *depPool) ResolveTargets(pkgs []string) error { // the one specified // this is how pacman behaves if dp.hasPackage(target.DepString()) { - fmt.Println("Skipping target", target) continue } @@ -346,12 +344,13 @@ func (dp *depPool) ResolveRepoDependency(pkg *alpm.Package) { }) } -func getDepPool(pkgs []string) (*depPool, error) { +func getDepPool(pkgs []string, warnings *aurWarnings) (*depPool, error) { dp, err := makeDepPool() if err != nil { return nil, err } + dp.Warnings = warnings err = dp.ResolveTargets(pkgs) return dp, err @@ -413,7 +412,7 @@ func (dp *depPool) findSatisfierAurCache(dep string) *rpc.Pkg { continue } - if pkgSatisfies(pkg.Name, pkg.Version, dep){ + if pkgSatisfies(pkg.Name, pkg.Version, dep) { providers.Pkgs = append(providers.Pkgs, pkg) seen.set(pkg.Name) continue diff --git a/install.go b/install.go index f527aa53..9fd505e4 100644 --- a/install.go +++ b/install.go @@ -58,37 +58,6 @@ func install(parser *arguments) error { } - //if len(aurTargets) > 0 || parser.existsArg("u", "sysupgrade") && len(remoteNames) > 0 { - // fmt.Println(bold(cyan("::") + " Querying AUR...")) - //} - dp, err := getDepPool(requestTargets) - if err != nil { - return err - } - - err = dp.CheckMissing() - if err != nil { - return err - } - - err = dp.CheckConflicts() - if err != nil { - return err - } - - // Deptree will handle db/pkg prefixes. Now they can be striped from the - // targets. - for pkg := range parser.targets { - _, name := splitDbFromName(pkg) - parser.targets.remove(pkg) - parser.targets.set(name) - } - - for i, pkg := range requestTargets { - _, name := splitDbFromName(pkg) - requestTargets[i] = name - } - //create the arguments to pass for the repo install arguments := parser.copy() arguments.delArg("y", "refresh") @@ -131,6 +100,23 @@ func install(parser *arguments) error { } } + dp, err := getDepPool(requestTargets, warnings) + if err != nil { + return err + } + + warnings.print() + + err = dp.CheckMissing() + if err != nil { + return err + } + + err = dp.CheckConflicts() + if err != nil { + return err + } + hasAur := len(dp.Aur) > 0 if hasAur && 0 == os.Geteuid() {