mirror of
https://github.com/Jguer/yay.git
synced 2025-12-06 00:02:43 -05:00
Merge pull request #390 from Morganamilo/stringslicemap
Refactor complex map types into their own type
This commit is contained in:
commit
4eca2be3c1
36
conflicts.go
36
conflicts.go
@ -11,7 +11,7 @@ import (
|
|||||||
|
|
||||||
// Checks a single conflict against every other to be installed package's
|
// Checks a single conflict against every other to be installed package's
|
||||||
// name and its provides.
|
// name and its provides.
|
||||||
func checkInnerConflict(name string, conflict string, conflicts map[string]stringSet, dc *depCatagories) {
|
func checkInnerConflict(name string, conflict string, conflicts mapStringSet, dc *depCatagories) {
|
||||||
deps, err := gopkg.ParseDeps([]string{conflict})
|
deps, err := gopkg.ParseDeps([]string{conflict})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return
|
return
|
||||||
@ -28,7 +28,7 @@ func checkInnerConflict(name string, conflict string, conflicts map[string]strin
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
if dep.Name == pkg.Name && version.Satisfies(dep) {
|
if dep.Name == pkg.Name && version.Satisfies(dep) {
|
||||||
addMapStringSet(conflicts, name, pkg.Name)
|
conflicts.Add(name, pkg.Name)
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -57,7 +57,7 @@ func checkInnerConflict(name string, conflict string, conflicts map[string]strin
|
|||||||
}
|
}
|
||||||
|
|
||||||
if version != nil && version.Satisfies(dep) {
|
if version != nil && version.Satisfies(dep) {
|
||||||
addMapStringSet(conflicts, name, pkg.Name)
|
conflicts.Add(name, pkg.Name)
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -75,7 +75,7 @@ func checkInnerConflict(name string, conflict string, conflicts map[string]strin
|
|||||||
}
|
}
|
||||||
|
|
||||||
if dep.Name == pkg.Name() && version.Satisfies(dep) {
|
if dep.Name == pkg.Name() && version.Satisfies(dep) {
|
||||||
addMapStringSet(conflicts, name, pkg.Name())
|
conflicts.Add(name, pkg.Name())
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -92,7 +92,7 @@ func checkInnerConflict(name string, conflict string, conflicts map[string]strin
|
|||||||
}
|
}
|
||||||
|
|
||||||
if provide.Mod == alpm.DepModAny {
|
if provide.Mod == alpm.DepModAny {
|
||||||
addMapStringSet(conflicts, name, pkg.Name())
|
conflicts.Add(name, pkg.Name())
|
||||||
return fmt.Errorf("")
|
return fmt.Errorf("")
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -102,7 +102,7 @@ func checkInnerConflict(name string, conflict string, conflicts map[string]strin
|
|||||||
}
|
}
|
||||||
|
|
||||||
if version.Satisfies(dep) {
|
if version.Satisfies(dep) {
|
||||||
addMapStringSet(conflicts, name, pkg.Name())
|
conflicts.Add(name, pkg.Name())
|
||||||
return fmt.Errorf("")
|
return fmt.Errorf("")
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -113,8 +113,8 @@ func checkInnerConflict(name string, conflict string, conflicts map[string]strin
|
|||||||
|
|
||||||
// Checks every to be installed package's conflicts against every other to be
|
// Checks every to be installed package's conflicts against every other to be
|
||||||
// installed package and its provides.
|
// installed package and its provides.
|
||||||
func checkForInnerConflicts(dc *depCatagories) map[string]stringSet {
|
func checkForInnerConflicts(dc *depCatagories) mapStringSet {
|
||||||
conflicts := make(map[string]stringSet)
|
conflicts := make(mapStringSet)
|
||||||
|
|
||||||
for _, pkg := range dc.Aur {
|
for _, pkg := range dc.Aur {
|
||||||
for _, cpkg := range pkg.Conflicts {
|
for _, cpkg := range pkg.Conflicts {
|
||||||
@ -134,7 +134,7 @@ func checkForInnerConflicts(dc *depCatagories) map[string]stringSet {
|
|||||||
|
|
||||||
// Checks a provide or packagename from a to be installed package
|
// Checks a provide or packagename from a to be installed package
|
||||||
// against every already installed package's conflicts
|
// against every already installed package's conflicts
|
||||||
func checkReverseConflict(name string, provide string, conflicts map[string]stringSet) error {
|
func checkReverseConflict(name string, provide string, conflicts mapStringSet) error {
|
||||||
var version *gopkg.CompleteVersion
|
var version *gopkg.CompleteVersion
|
||||||
var err error
|
var err error
|
||||||
|
|
||||||
@ -176,7 +176,7 @@ func checkReverseConflict(name string, provide string, conflicts map[string]stri
|
|||||||
|
|
||||||
if version == nil || version.Satisfies(dep) {
|
if version == nil || version.Satisfies(dep) {
|
||||||
// Todo
|
// Todo
|
||||||
addMapStringSet(conflicts, name, pkg.Name()+" ("+provide+")")
|
conflicts.Add(name, pkg.Name()+" ("+provide+")")
|
||||||
return fmt.Errorf("")
|
return fmt.Errorf("")
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -191,7 +191,7 @@ func checkReverseConflict(name string, provide string, conflicts map[string]stri
|
|||||||
|
|
||||||
// Checks the conflict of a to be installed package against the package name and
|
// Checks the conflict of a to be installed package against the package name and
|
||||||
// provides of every installed package.
|
// provides of every installed package.
|
||||||
func checkConflict(name string, conflict string, conflicts map[string]stringSet) error {
|
func checkConflict(name string, conflict string, conflicts mapStringSet) error {
|
||||||
localDb, err := alpmHandle.LocalDb()
|
localDb, err := alpmHandle.LocalDb()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
@ -215,7 +215,7 @@ func checkConflict(name string, conflict string, conflicts map[string]stringSet)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if dep.Name == pkg.Name() && version.Satisfies(dep) {
|
if dep.Name == pkg.Name() && version.Satisfies(dep) {
|
||||||
addMapStringSet(conflicts, name, pkg.Name())
|
conflicts.Add(name, pkg.Name())
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -232,7 +232,7 @@ func checkConflict(name string, conflict string, conflicts map[string]stringSet)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if provide.Mod == alpm.DepModAny {
|
if provide.Mod == alpm.DepModAny {
|
||||||
addMapStringSet(conflicts, name, pkg.Name()+" ("+provide.Name+")")
|
conflicts.Add(name, pkg.Name()+" ("+provide.Name+")")
|
||||||
return fmt.Errorf("")
|
return fmt.Errorf("")
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -242,7 +242,7 @@ func checkConflict(name string, conflict string, conflicts map[string]stringSet)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if version.Satisfies(dep) {
|
if version.Satisfies(dep) {
|
||||||
addMapStringSet(conflicts, name, pkg.Name()+" ("+provide.Name+")")
|
conflicts.Add(name, pkg.Name()+" ("+provide.Name+")")
|
||||||
return fmt.Errorf("")
|
return fmt.Errorf("")
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -258,8 +258,8 @@ func checkConflict(name string, conflict string, conflicts map[string]stringSet)
|
|||||||
// Checks every to be installed package's conflicts against the names and
|
// Checks every to be installed package's conflicts against the names and
|
||||||
// provides of every already installed package and checks every to be installed
|
// provides of every already installed package and checks every to be installed
|
||||||
// package's name and provides against every already installed package.
|
// package's name and provides against every already installed package.
|
||||||
func checkForConflicts(dc *depCatagories) (map[string]stringSet, error) {
|
func checkForConflicts(dc *depCatagories) (mapStringSet, error) {
|
||||||
conflicts := make(map[string]stringSet)
|
conflicts := make(mapStringSet)
|
||||||
|
|
||||||
for _, pkg := range dc.Aur {
|
for _, pkg := range dc.Aur {
|
||||||
for _, cpkg := range pkg.Conflicts {
|
for _, cpkg := range pkg.Conflicts {
|
||||||
@ -296,8 +296,8 @@ func checkForConflicts(dc *depCatagories) (map[string]stringSet, error) {
|
|||||||
// does some printing.
|
// does some printing.
|
||||||
func checkForAllConflicts(dc *depCatagories) error {
|
func checkForAllConflicts(dc *depCatagories) error {
|
||||||
var err error
|
var err error
|
||||||
var conflicts map[string]stringSet
|
var conflicts mapStringSet
|
||||||
var innerConflicts map[string]stringSet
|
var innerConflicts mapStringSet
|
||||||
var wg sync.WaitGroup
|
var wg sync.WaitGroup
|
||||||
wg.Add(2)
|
wg.Add(2)
|
||||||
|
|
||||||
|
|||||||
@ -548,7 +548,7 @@ func depTreeRecursive(dt *depTree, localDb *alpm.Db, syncDb alpm.DbList, isMake
|
|||||||
}
|
}
|
||||||
|
|
||||||
func checkVersions(dt *depTree) error {
|
func checkVersions(dt *depTree) error {
|
||||||
has := make(map[string][]string)
|
has := make(mapStringSlice)
|
||||||
allDeps := make([]*gopkg.Dependency, 0)
|
allDeps := make([]*gopkg.Dependency, 0)
|
||||||
|
|
||||||
localDb, err := alpmHandle.LocalDb()
|
localDb, err := alpmHandle.LocalDb()
|
||||||
@ -569,13 +569,13 @@ func checkVersions(dt *depTree) error {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
addMapStringSlice(has, pkg.Name, pkg.Version)
|
has.Add(pkg.Name, pkg.Version)
|
||||||
|
|
||||||
if !isDevelName(pkg.Name) {
|
if !isDevelName(pkg.Name) {
|
||||||
for _, name := range pkg.Provides {
|
for _, name := range pkg.Provides {
|
||||||
_name, _ver := splitNameFromDep(name)
|
_name, _ver := splitNameFromDep(name)
|
||||||
if _ver != "" {
|
if _ver != "" {
|
||||||
addMapStringSlice(has, _name, _ver)
|
has.Add(_name, _ver)
|
||||||
} else {
|
} else {
|
||||||
delete(has, _name)
|
delete(has, _name)
|
||||||
}
|
}
|
||||||
@ -594,11 +594,11 @@ func checkVersions(dt *depTree) error {
|
|||||||
return nil
|
return nil
|
||||||
})
|
})
|
||||||
|
|
||||||
addMapStringSlice(has, pkg.Name(), pkg.Version())
|
has.Add(pkg.Name(), pkg.Version())
|
||||||
|
|
||||||
pkg.Provides().ForEach(func(dep alpm.Depend) error {
|
pkg.Provides().ForEach(func(dep alpm.Depend) error {
|
||||||
if dep.Mod != alpm.DepModAny {
|
if dep.Mod != alpm.DepModAny {
|
||||||
addMapStringSlice(has, dep.Name, dep.Version)
|
has.Add(dep.Name, dep.Version)
|
||||||
} else {
|
} else {
|
||||||
delete(has, dep.Name)
|
delete(has, dep.Name)
|
||||||
}
|
}
|
||||||
@ -611,7 +611,7 @@ func checkVersions(dt *depTree) error {
|
|||||||
localDb.PkgCache().ForEach(func(pkg alpm.Package) error {
|
localDb.PkgCache().ForEach(func(pkg alpm.Package) error {
|
||||||
pkg.Provides().ForEach(func(dep alpm.Depend) error {
|
pkg.Provides().ForEach(func(dep alpm.Depend) error {
|
||||||
if dep.Mod != alpm.DepModAny {
|
if dep.Mod != alpm.DepModAny {
|
||||||
addMapStringSlice(has, dep.Name, dep.Version)
|
has.Add(dep.Name, dep.Version)
|
||||||
} else {
|
} else {
|
||||||
delete(has, dep.Name)
|
delete(has, dep.Name)
|
||||||
}
|
}
|
||||||
|
|||||||
4
query.go
4
query.go
@ -332,7 +332,7 @@ func hangingPackages(removeOptional bool) (hanging []string, err error) {
|
|||||||
// State = 2 - Keep package and have iterated over dependencies
|
// State = 2 - Keep package and have iterated over dependencies
|
||||||
safePackages := make(map[string]uint8)
|
safePackages := make(map[string]uint8)
|
||||||
// provides stores a mapping from the provides name back to the original package name
|
// provides stores a mapping from the provides name back to the original package name
|
||||||
provides := make(map[string]stringSet)
|
provides := make(mapStringSet)
|
||||||
packages := localDb.PkgCache()
|
packages := localDb.PkgCache()
|
||||||
|
|
||||||
// Mark explicit dependencies and enumerate the provides list
|
// Mark explicit dependencies and enumerate the provides list
|
||||||
@ -344,7 +344,7 @@ func hangingPackages(removeOptional bool) (hanging []string, err error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
pkg.Provides().ForEach(func(dep alpm.Depend) error {
|
pkg.Provides().ForEach(func(dep alpm.Depend) error {
|
||||||
addMapStringSet(provides, dep.Name, pkg.Name())
|
provides.Add(dep.Name, pkg.Name())
|
||||||
return nil
|
return nil
|
||||||
})
|
})
|
||||||
return nil
|
return nil
|
||||||
|
|||||||
19
utils.go
19
utils.go
@ -7,6 +7,9 @@ import (
|
|||||||
"unicode"
|
"unicode"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
type mapStringSlice map[string][]string
|
||||||
|
type mapStringSet map[string]stringSet
|
||||||
|
|
||||||
type intRange struct {
|
type intRange struct {
|
||||||
min int
|
min int
|
||||||
max int
|
max int
|
||||||
@ -49,20 +52,20 @@ func max(a, b int) int {
|
|||||||
return a
|
return a
|
||||||
}
|
}
|
||||||
|
|
||||||
func addMapStringSet(h map[string]stringSet, n string, v string) {
|
func (mss mapStringSet) Add(n string, v string) {
|
||||||
_, ok := h[n]
|
_, ok := mss[n]
|
||||||
if !ok {
|
if !ok {
|
||||||
h[n] = make(stringSet)
|
mss[n] = make(stringSet)
|
||||||
}
|
}
|
||||||
h[n].set(v)
|
mss[n].set(v)
|
||||||
}
|
}
|
||||||
|
|
||||||
func addMapStringSlice(h map[string][]string, n string, v string) {
|
func (mss mapStringSlice) Add(n string, v string) {
|
||||||
_, ok := h[n]
|
_, ok := mss[n]
|
||||||
if !ok {
|
if !ok {
|
||||||
h[n] = make([]string, 0, 1)
|
mss[n] = make([]string, 0, 1)
|
||||||
}
|
}
|
||||||
h[n] = append(h[n], v)
|
mss[n] = append(mss[n], v)
|
||||||
}
|
}
|
||||||
|
|
||||||
func completeFileName(dir, name string) (string, error) {
|
func completeFileName(dir, name string) (string, error) {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user