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,
This commit is contained in:
morganamilo 2018-05-10 14:36:38 +01:00
parent b76d085418
commit d51205194e
No known key found for this signature in database
GPG key ID: 6FE9E7996B0B082E
2 changed files with 21 additions and 36 deletions

View file

@ -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

View file

@ -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() {