1
0
mirror of https://github.com/Jguer/yay synced 2024-07-05 18:01:50 +00:00

Move stringset to its own module

types is pretty generic as a module name, this should be split into
seperate modules.
This commit is contained in:
morganamilo 2019-10-16 22:25:40 +01:00
parent 0856edcf04
commit f2579f26a3
No known key found for this signature in database
GPG Key ID: 6FE9E7996B0B082E
14 changed files with 125 additions and 83 deletions

View File

@ -6,7 +6,7 @@ import (
"os"
"path/filepath"
"github.com/Jguer/yay/v9/pkg/types"
"github.com/Jguer/yay/v9/pkg/stringset"
)
// GetPkgbuild gets the pkgbuild of the package 'pkg' trying the ABS first and then the AUR trying the ABS first and then the AUR.
@ -109,8 +109,8 @@ func syncClean(parser *arguments) error {
func cleanAUR(keepInstalled, keepCurrent, removeAll bool) error {
fmt.Println("removing AUR packages from cache...")
installedBases := make(types.StringSet)
inAURBases := make(types.StringSet)
installedBases := make(stringset.StringSet)
inAURBases := make(stringset.StringSet)
_, remotePackages, _, _, err := filterPackages()
if err != nil {

View File

@ -7,10 +7,10 @@ import (
"sync"
alpm "github.com/Jguer/go-alpm"
"github.com/Jguer/yay/v9/pkg/types"
"github.com/Jguer/yay/v9/pkg/stringset"
)
func (dp *depPool) checkInnerConflict(name string, conflict string, conflicts types.MapStringSet) {
func (dp *depPool) checkInnerConflict(name string, conflict string, conflicts stringset.MapStringSet) {
for _, pkg := range dp.Aur {
if pkg.Name == name {
continue
@ -32,7 +32,7 @@ func (dp *depPool) checkInnerConflict(name string, conflict string, conflicts ty
}
}
func (dp *depPool) checkForwardConflict(name string, conflict string, conflicts types.MapStringSet) {
func (dp *depPool) checkForwardConflict(name string, conflict string, conflicts stringset.MapStringSet) {
_ = dp.LocalDB.PkgCache().ForEach(func(pkg alpm.Package) error {
if pkg.Name() == name || dp.hasPackage(pkg.Name()) {
return nil
@ -50,7 +50,7 @@ func (dp *depPool) checkForwardConflict(name string, conflict string, conflicts
})
}
func (dp *depPool) checkReverseConflict(name string, conflict string, conflicts types.MapStringSet) {
func (dp *depPool) checkReverseConflict(name string, conflict string, conflicts stringset.MapStringSet) {
for _, pkg := range dp.Aur {
if pkg.Name == name {
continue
@ -80,7 +80,7 @@ func (dp *depPool) checkReverseConflict(name string, conflict string, conflicts
}
}
func (dp *depPool) checkInnerConflicts(conflicts types.MapStringSet) {
func (dp *depPool) checkInnerConflicts(conflicts stringset.MapStringSet) {
for _, pkg := range dp.Aur {
for _, conflict := range pkg.Conflicts {
dp.checkInnerConflict(pkg.Name, conflict, conflicts)
@ -95,7 +95,7 @@ func (dp *depPool) checkInnerConflicts(conflicts types.MapStringSet) {
}
}
func (dp *depPool) checkForwardConflicts(conflicts types.MapStringSet) {
func (dp *depPool) checkForwardConflicts(conflicts stringset.MapStringSet) {
for _, pkg := range dp.Aur {
for _, conflict := range pkg.Conflicts {
dp.checkForwardConflict(pkg.Name, conflict, conflicts)
@ -110,7 +110,7 @@ func (dp *depPool) checkForwardConflicts(conflicts types.MapStringSet) {
}
}
func (dp *depPool) checkReverseConflicts(conflicts types.MapStringSet) {
func (dp *depPool) checkReverseConflicts(conflicts stringset.MapStringSet) {
_ = dp.LocalDB.PkgCache().ForEach(func(pkg alpm.Package) error {
if dp.hasPackage(pkg.Name()) {
return nil
@ -125,10 +125,10 @@ func (dp *depPool) checkReverseConflicts(conflicts types.MapStringSet) {
})
}
func (dp *depPool) CheckConflicts() (types.MapStringSet, error) {
func (dp *depPool) CheckConflicts() (stringset.MapStringSet, error) {
var wg sync.WaitGroup
innerConflicts := make(types.MapStringSet)
conflicts := make(types.MapStringSet)
innerConflicts := make(stringset.MapStringSet)
conflicts := make(stringset.MapStringSet)
wg.Add(2)
fmt.Println(bold(cyan("::") + bold(" Checking for conflicts...")))
@ -182,9 +182,9 @@ func (dp *depPool) CheckConflicts() (types.MapStringSet, error) {
// These are used to decide what to pass --ask to (if set) or don't pass --noconfirm to
// As we have no idea what the order is yet we add every inner conflict to the slice
for name, pkgs := range innerConflicts {
conflicts[name] = make(types.StringSet)
conflicts[name] = make(stringset.StringSet)
for pkg := range pkgs {
conflicts[pkg] = make(types.StringSet)
conflicts[pkg] = make(stringset.StringSet)
}
}
@ -204,7 +204,7 @@ func (dp *depPool) CheckConflicts() (types.MapStringSet, error) {
}
type missing struct {
Good types.StringSet
Good stringset.StringSet
Missing map[string][][]string
}
@ -261,7 +261,7 @@ func (dp *depPool) _checkMissing(dep string, stack []string, missing *missing) {
func (dp *depPool) CheckMissing() error {
missing := &missing{
make(types.StringSet),
make(stringset.StringSet),
make(map[string][][]string),
}

View File

@ -2,7 +2,7 @@ package main
import (
alpm "github.com/Jguer/go-alpm"
"github.com/Jguer/yay/v9/pkg/types"
"github.com/Jguer/yay/v9/pkg/stringset"
rpc "github.com/mikkeloscar/aur"
)
@ -27,14 +27,14 @@ func (b Base) URLPath() string {
type depOrder struct {
Aur []Base
Repo []*alpm.Package
Runtime types.StringSet
Runtime stringset.StringSet
}
func makeDepOrder() *depOrder {
return &depOrder{
make([]Base, 0),
make([]*alpm.Package, 0),
make(types.StringSet),
make(stringset.StringSet),
}
}

View File

@ -6,7 +6,7 @@ import (
"sync"
alpm "github.com/Jguer/go-alpm"
"github.com/Jguer/yay/v9/pkg/types"
"github.com/Jguer/yay/v9/pkg/stringset"
rpc "github.com/mikkeloscar/aur"
)
@ -43,7 +43,7 @@ func (t target) String() string {
type depPool struct {
Targets []target
Explicit types.StringSet
Explicit stringset.StringSet
Repo map[string]*alpm.Package
Aur map[string]*rpc.Pkg
AurCache map[string]*rpc.Pkg
@ -65,7 +65,7 @@ func makeDepPool() (*depPool, error) {
dp := &depPool{
make([]target, 0),
make(types.StringSet),
make(stringset.StringSet),
make(map[string]*alpm.Package),
make(map[string]*rpc.Pkg),
make(map[string]*rpc.Pkg),
@ -83,7 +83,7 @@ func (dp *depPool) ResolveTargets(pkgs []string) error {
// RPC requests are slow
// Combine as many AUR package requests as possible into a single RPC
// call
aurTargets := make(types.StringSet)
aurTargets := make(stringset.StringSet)
pkgs = removeInvalidTargets(pkgs)
@ -173,7 +173,7 @@ func (dp *depPool) ResolveTargets(pkgs []string) error {
// positives.
//
// This method increases dependency resolve time
func (dp *depPool) findProvides(pkgs types.StringSet) error {
func (dp *depPool) findProvides(pkgs stringset.StringSet) error {
var mux sync.Mutex
var wg sync.WaitGroup
@ -220,7 +220,7 @@ func (dp *depPool) findProvides(pkgs types.StringSet) error {
return nil
}
func (dp *depPool) cacheAURPackages(_pkgs types.StringSet) error {
func (dp *depPool) cacheAURPackages(_pkgs stringset.StringSet) error {
pkgs := _pkgs.Copy()
query := make([]string, 0)
@ -261,9 +261,9 @@ func (dp *depPool) cacheAURPackages(_pkgs types.StringSet) error {
return nil
}
func (dp *depPool) resolveAURPackages(pkgs types.StringSet, explicit bool) error {
newPackages := make(types.StringSet)
newAURPackages := make(types.StringSet)
func (dp *depPool) resolveAURPackages(pkgs stringset.StringSet, explicit bool) error {
newPackages := make(stringset.StringSet)
newAURPackages := make(stringset.StringSet)
err := dp.cacheAURPackages(pkgs)
if err != nil {
@ -387,7 +387,7 @@ func (dp *depPool) findSatisfierAur(dep string) *rpc.Pkg {
// TODO: maybe intermix repo providers in the menu
func (dp *depPool) findSatisfierAurCache(dep string) *rpc.Pkg {
depName, _, _ := splitDep(dep)
seen := make(types.StringSet)
seen := make(stringset.StringSet)
providers := makeProviders(depName)
if dp.LocalDB.Pkg(depName) != nil {

View File

@ -12,6 +12,7 @@ import (
alpm "github.com/Jguer/go-alpm"
"github.com/Jguer/yay/v9/pkg/completion"
"github.com/Jguer/yay/v9/pkg/types"
"github.com/Jguer/yay/v9/pkg/stringset"
gosrc "github.com/Morganamilo/go-srcinfo"
)
@ -49,7 +50,7 @@ func asexp(parser *arguments, pkgs []string) error {
// Install handles package installs
func install(parser *arguments) (err error) {
var incompatible types.StringSet
var incompatible stringset.StringSet
var do *depOrder
var aurUp upSlice
@ -87,8 +88,8 @@ func install(parser *arguments) (err error) {
return err
}
remoteNamesCache := types.SliceToStringSet(remoteNames)
localNamesCache := types.SliceToStringSet(localNames)
remoteNamesCache := stringset.SliceToStringSet(remoteNames)
localNamesCache := stringset.SliceToStringSet(localNames)
requestTargets := parser.copy().targets
@ -140,7 +141,7 @@ func install(parser *arguments) (err error) {
}
}
targets := types.SliceToStringSet(parser.targets)
targets := stringset.SliceToStringSet(parser.targets)
dp, err := getDepPool(requestTargets, warnings)
if err != nil {
@ -451,8 +452,8 @@ func earlyRefresh(parser *arguments) error {
return show(passToPacman(arguments))
}
func getIncompatible(bases []Base, srcinfos map[string]*gosrc.Srcinfo) (types.StringSet, error) {
incompatible := make(types.StringSet)
func getIncompatible(bases []Base, srcinfos map[string]*gosrc.Srcinfo) (stringset.StringSet, error) {
incompatible := make(stringset.StringSet)
basesMap := make(map[string]Base)
alpmArch, err := alpmHandle.Arch()
if err != nil {
@ -535,7 +536,7 @@ func anyExistInCache(bases []Base) bool {
return false
}
func pkgbuildNumberMenu(bases []Base, installed types.StringSet) bool {
func pkgbuildNumberMenu(bases []Base, installed stringset.StringSet) bool {
toPrint := ""
askClean := false
@ -568,7 +569,7 @@ func pkgbuildNumberMenu(bases []Base, installed types.StringSet) bool {
return askClean
}
func cleanNumberMenu(bases []Base, installed types.StringSet, hasClean bool) ([]Base, error) {
func cleanNumberMenu(bases []Base, installed stringset.StringSet, hasClean bool) ([]Base, error) {
toClean := make([]Base, 0)
if !hasClean {
@ -637,15 +638,15 @@ func cleanNumberMenu(bases []Base, installed types.StringSet, hasClean bool) ([]
return toClean, nil
}
func editNumberMenu(bases []Base, installed types.StringSet) ([]Base, error) {
func editNumberMenu(bases []Base, installed stringset.StringSet) ([]Base, error) {
return editDiffNumberMenu(bases, installed, false)
}
func diffNumberMenu(bases []Base, installed types.StringSet) ([]Base, error) {
func diffNumberMenu(bases []Base, installed stringset.StringSet) ([]Base, error) {
return editDiffNumberMenu(bases, installed, true)
}
func editDiffNumberMenu(bases []Base, installed types.StringSet, diff bool) ([]Base, error) {
func editDiffNumberMenu(bases []Base, installed stringset.StringSet, diff bool) ([]Base, error) {
toEdit := make([]Base, 0)
var editInput string
var err error
@ -715,7 +716,7 @@ func editDiffNumberMenu(bases []Base, installed types.StringSet, diff bool) ([]B
return toEdit, nil
}
func updatePkgbuildSeenRef(bases []Base, cloned types.StringSet) error {
func updatePkgbuildSeenRef(bases []Base, cloned stringset.StringSet) error {
var errMulti types.MultiError
for _, base := range bases {
pkg := base.Pkgbase()
@ -730,7 +731,7 @@ func updatePkgbuildSeenRef(bases []Base, cloned types.StringSet) error {
return errMulti.Return()
}
func showPkgbuildDiffs(bases []Base, cloned types.StringSet) error {
func showPkgbuildDiffs(bases []Base, cloned stringset.StringSet) error {
var errMulti types.MultiError
for _, base := range bases {
pkg := base.Pkgbase()
@ -840,8 +841,8 @@ func parseSrcinfoFiles(bases []Base, errIsFatal bool) (map[string]*gosrc.Srcinfo
return srcinfos, nil
}
func pkgbuildsToSkip(bases []Base, targets types.StringSet) types.StringSet {
toSkip := make(types.StringSet)
func pkgbuildsToSkip(bases []Base, targets stringset.StringSet) stringset.StringSet {
toSkip := make(stringset.StringSet)
for _, base := range bases {
isTarget := false
@ -879,8 +880,8 @@ func mergePkgbuilds(bases []Base) error {
return nil
}
func downloadPkgbuilds(bases []Base, toSkip types.StringSet, buildDir string) (types.StringSet, error) {
cloned := make(types.StringSet)
func downloadPkgbuilds(bases []Base, toSkip stringset.StringSet, buildDir string) (stringset.StringSet, error) {
cloned := make(stringset.StringSet)
downloaded := 0
var wg sync.WaitGroup
var mux sync.Mutex
@ -940,7 +941,7 @@ func downloadPkgbuilds(bases []Base, toSkip types.StringSet, buildDir string) (t
return cloned, errs.Return()
}
func downloadPkgbuildsSources(bases []Base, incompatible types.StringSet) (err error) {
func downloadPkgbuildsSources(bases []Base, incompatible stringset.StringSet) (err error) {
for _, base := range bases {
pkg := base.Pkgbase()
dir := filepath.Join(config.BuildDir, pkg)
@ -959,7 +960,7 @@ func downloadPkgbuildsSources(bases []Base, incompatible types.StringSet) (err e
return
}
func buildInstallPkgbuilds(dp *depPool, do *depOrder, srcinfos map[string]*gosrc.Srcinfo, parser *arguments, incompatible types.StringSet, conflicts types.MapStringSet) error {
func buildInstallPkgbuilds(dp *depPool, do *depOrder, srcinfos map[string]*gosrc.Srcinfo, parser *arguments, incompatible stringset.StringSet, conflicts stringset.MapStringSet) error {
arguments := parser.copy()
arguments.clearTargets()
arguments.op = "U"
@ -985,8 +986,8 @@ func buildInstallPkgbuilds(dp *depPool, do *depOrder, srcinfos map[string]*gosrc
//cache as a stringset. maybe make it return a string set in the first
//place
remoteNamesCache := types.SliceToStringSet(remoteNames)
localNamesCache := types.SliceToStringSet(localNames)
remoteNamesCache := stringset.SliceToStringSet(remoteNames)
localNamesCache := stringset.SliceToStringSet(localNames)
doInstall := func() error {
if len(arguments.targets) == 0 {

View File

@ -9,7 +9,7 @@ import (
"strconv"
"strings"
"github.com/Jguer/yay/v9/pkg/types"
"github.com/Jguer/yay/v9/pkg/stringset"
rpc "github.com/mikkeloscar/aur"
)
@ -19,7 +19,7 @@ type arguments struct {
op string
options map[string]string
globals map[string]string
doubles types.StringSet // Tracks args passed twice such as -yy and -dd
doubles stringset.StringSet // Tracks args passed twice such as -yy and -dd
targets []string
}
@ -28,7 +28,7 @@ func makeArguments() *arguments {
"",
make(map[string]string),
make(map[string]string),
make(types.StringSet),
make(stringset.StringSet),
make([]string, 0),
}
}

View File

@ -1,4 +1,4 @@
package types
package stringset
// StringSet is a basic set implementation for strings.
// This is used a lot so it deserves its own type.
@ -12,6 +12,8 @@ type StringSet map[string]struct{}
type MapStringSet map[string]StringSet
// Add adds a new value to the Map.
// If n is already in the map, then v is appended to the StringSet under that key.
// Otherwise a new StringSet is creayed containing v
func (mss MapStringSet) Add(n string, v string) {
_, ok := mss[n]
if !ok {

View File

@ -4,6 +4,8 @@ import (
"strconv"
"strings"
"unicode"
"github.com/Jguer/yay/v9/pkg/stringset"
)
// IntRange stores a max and min amount for range
@ -66,11 +68,11 @@ func Max(a, b int) int {
//intended to allow words inside of number menus. e.g. 'all' 'none' 'abort'
//of course the implementation is up to the caller, this function mearley parses
//the input and organizes it
func ParseNumberMenu(input string) (IntRanges, IntRanges, StringSet, StringSet) {
func ParseNumberMenu(input string) (IntRanges, IntRanges, stringset.StringSet, stringset.StringSet) {
include := make(IntRanges, 0)
exclude := make(IntRanges, 0)
otherInclude := make(StringSet)
otherExclude := make(StringSet)
otherInclude := make(stringset.StringSet)
otherExclude := make(stringset.StringSet)
words := strings.FieldsFunc(input, func(c rune) bool {
return unicode.IsSpace(c) || c == ','

View File

@ -1,15 +1,16 @@
package types
import (
"testing"
"github.com/Jguer/yay/v9/pkg/stringset"
"testing"
)
func TestParseNumberMenu(t *testing.T) {
type result struct {
Include IntRanges
Exclude IntRanges
OtherInclude StringSet
OtherExclude StringSet
OtherInclude stringset.StringSet
OtherExclude stringset.StringSet
}
inputs := []string{
@ -28,18 +29,18 @@ func TestParseNumberMenu(t *testing.T) {
}
expected := []result{
{IntRanges{makeIntRange(1, 1), makeIntRange(2, 2), makeIntRange(3, 3), makeIntRange(4, 4), makeIntRange(5, 5)}, IntRanges{}, make(StringSet), make(StringSet)},
{IntRanges{makeIntRange(1, 10), makeIntRange(5, 15)}, IntRanges{}, make(StringSet), make(StringSet)},
{IntRanges{makeIntRange(5, 10), makeIntRange(85, 90)}, IntRanges{}, make(StringSet), make(StringSet)},
{IntRanges{makeIntRange(1, 1), makeIntRange(99, 99), makeIntRange(60, 62)}, IntRanges{makeIntRange(2, 2), makeIntRange(5, 10), makeIntRange(38, 40), makeIntRange(123, 123)}, make(StringSet), make(StringSet)},
{IntRanges{}, IntRanges{}, MakeStringSet("abort", "all", "none"), make(StringSet)},
{IntRanges{}, IntRanges{}, MakeStringSet("a-b"), MakeStringSet("abort", "a-b")},
{IntRanges{}, IntRanges{}, MakeStringSet("-9223372036854775809-9223372036854775809"), make(StringSet)},
{IntRanges{makeIntRange(1, 1), makeIntRange(2, 2), makeIntRange(3, 3), makeIntRange(4, 4), makeIntRange(5, 5)}, IntRanges{}, make(StringSet), make(StringSet)},
{IntRanges{makeIntRange(1, 1), makeIntRange(2, 2), makeIntRange(3, 3), makeIntRange(4, 4), makeIntRange(5, 5), makeIntRange(6, 6), makeIntRange(7, 7), makeIntRange(8, 8)}, IntRanges{}, make(StringSet), make(StringSet)},
{IntRanges{}, IntRanges{}, make(StringSet), make(StringSet)},
{IntRanges{}, IntRanges{}, make(StringSet), make(StringSet)},
{IntRanges{}, IntRanges{}, MakeStringSet("a", "b", "c", "d", "e"), make(StringSet)},
{IntRanges{makeIntRange(1, 1), makeIntRange(2, 2), makeIntRange(3, 3), makeIntRange(4, 4), makeIntRange(5, 5)}, IntRanges{}, make(stringset.StringSet), make(stringset.StringSet)},
{IntRanges{makeIntRange(1, 10), makeIntRange(5, 15)}, IntRanges{}, make(stringset.StringSet), make(stringset.StringSet)},
{IntRanges{makeIntRange(5, 10), makeIntRange(85, 90)}, IntRanges{}, make(stringset.StringSet), make(stringset.StringSet)},
{IntRanges{makeIntRange(1, 1), makeIntRange(99, 99), makeIntRange(60, 62)}, IntRanges{makeIntRange(2, 2), makeIntRange(5, 10), makeIntRange(38, 40), makeIntRange(123, 123)}, make(stringset.StringSet), make(stringset.StringSet)},
{IntRanges{}, IntRanges{}, stringset.Make("abort", "all", "none"), make(stringset.StringSet)},
{IntRanges{}, IntRanges{}, stringset.Make("a-b"), stringset.Make("abort", "a-b")},
{IntRanges{}, IntRanges{}, stringset.Make("-9223372036854775809-9223372036854775809"), make(stringset.StringSet)},
{IntRanges{makeIntRange(1, 1), makeIntRange(2, 2), makeIntRange(3, 3), makeIntRange(4, 4), makeIntRange(5, 5)}, IntRanges{}, make(stringset.StringSet), make(stringset.StringSet)},
{IntRanges{makeIntRange(1, 1), makeIntRange(2, 2), makeIntRange(3, 3), makeIntRange(4, 4), makeIntRange(5, 5), makeIntRange(6, 6), makeIntRange(7, 7), makeIntRange(8, 8)}, IntRanges{}, make(stringset.StringSet), make(stringset.StringSet)},
{IntRanges{}, IntRanges{}, make(stringset.StringSet), make(stringset.StringSet)},
{IntRanges{}, IntRanges{}, make(stringset.StringSet), make(stringset.StringSet)},
{IntRanges{}, IntRanges{}, stringset.Make("a", "b", "c", "d", "e"), make(stringset.StringSet)},
}
for n, in := range inputs {
@ -48,8 +49,8 @@ func TestParseNumberMenu(t *testing.T) {
if !intRangesEqual(include, res.Include) ||
!intRangesEqual(exclude, res.Exclude) ||
!StringSetEqual(otherInclude, res.OtherInclude) ||
!StringSetEqual(otherExclude, res.OtherExclude) {
!stringset.Equal(otherInclude, res.OtherInclude) ||
!stringset.Equal(otherExclude, res.OtherExclude) {
t.Fatalf("Test %d Failed: Expected: include=%+v exclude=%+v otherInclude=%+v otherExclude=%+v got include=%+v excluive=%+v otherInclude=%+v otherExclude=%+v",
n+1, res.Include, res.Exclude, res.OtherInclude, res.OtherExclude, include, exclude, otherInclude, otherExclude)

View File

@ -13,6 +13,7 @@ import (
"time"
"github.com/Jguer/yay/v9/pkg/types"
"github.com/Jguer/yay/v9/pkg/stringset"
rpc "github.com/mikkeloscar/aur"
)
@ -390,7 +391,7 @@ func printNumberOfUpdates() error {
//TODO: Make it less hacky
func printUpdateList(parser *arguments) error {
targets := types.SliceToStringSet(parser.targets)
targets := stringset.SliceToStringSet(parser.targets)
warnings := &aurWarnings{}
old := os.Stdout // keep backup of the real stdout
os.Stdout = nil

View File

@ -10,6 +10,7 @@ import (
alpm "github.com/Jguer/go-alpm"
"github.com/Jguer/yay/v9/pkg/types"
"github.com/Jguer/yay/v9/pkg/stringset"
rpc "github.com/mikkeloscar/aur"
)
@ -363,7 +364,7 @@ func hangingPackages(removeOptional bool) (hanging []string, err error) {
// State = 2 - Keep package and have iterated over dependencies
safePackages := make(map[string]uint8)
// provides stores a mapping from the provides name back to the original package name
provides := make(types.MapStringSet)
provides := make(stringset.MapStringSet)
packages := localDB.PkgCache()
// Mark explicit dependencies and enumerate the provides list

View File

@ -8,6 +8,7 @@ import (
alpm "github.com/Jguer/go-alpm"
"github.com/Jguer/yay/v9/pkg/types"
"github.com/Jguer/yay/v9/pkg/stringset"
rpc "github.com/mikkeloscar/aur"
)
@ -169,7 +170,7 @@ func upList(warnings *aurWarnings) (upSlice, upSlice, error) {
printLocalNewerThanAUR(remote, aurdata)
if develUp != nil {
names := make(types.StringSet)
names := make(stringset.StringSet)
for _, up := range develUp {
names.Set(up.Name)
}
@ -330,9 +331,9 @@ func upRepo(local []alpm.Package) (upSlice, error) {
}
// upgradePkgs handles updating the cache and installing updates.
func upgradePkgs(aurUp, repoUp upSlice) (types.StringSet, types.StringSet, error) {
ignore := make(types.StringSet)
aurNames := make(types.StringSet)
func upgradePkgs(aurUp, repoUp upSlice) (stringset.StringSet, stringset.StringSet, error) {
ignore := make(stringset.StringSet)
aurNames := make(stringset.StringSet)
allUpLen := len(repoUp) + len(aurUp)
if allUpLen == 0 {

33
utils_test.go Normal file
View File

@ -0,0 +1,33 @@
package main
import "testing"
func TestLessRunes(t *testing.T) {
t.Parallel()
type args struct {
iRunes []rune
jRunes []rune
}
tests := []struct {
name string
args args
want bool
}{
{name: "nilslices", args: args{iRunes: nil, jRunes: nil}, want: false},
{name: "emptyslices", args: args{iRunes: []rune{}, jRunes: []rune{}}, want: false},
{name: "simpleslice a,b", args: args{iRunes: []rune{'a'}, jRunes: []rune{'b'}}, want: true},
{name: "simpleslice b,a", args: args{iRunes: []rune{'b'}, jRunes: []rune{'a'}}, want: false},
{name: "equalslice", args: args{iRunes: []rune{'a', 'a', 'a'}, jRunes: []rune{'a', 'a', 'a'}}, want: false},
{name: "uppercase", args: args{iRunes: []rune{'a'}, jRunes: []rune{'A'}}, want: false},
{name: "longerFirstArg", args: args{iRunes: []rune{'a', 'b'}, jRunes: []rune{'a'}}, want: false},
{name: "longerSecondArg", args: args{iRunes: []rune{'a'}, jRunes: []rune{'a', 'b'}}, want: true},
{name: "utf8 less", args: args{iRunes: []rune{'世', '2', '0'}, jRunes: []rune{'世', '界', '3'}}, want: true},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
if got := LessRunes(tt.args.iRunes, tt.args.jRunes); got != tt.want {
t.Errorf("LessRunes() = %v, want %v", got, tt.want)
}
})
}
}

4
vcs.go
View File

@ -9,7 +9,7 @@ import (
"sync"
"time"
"github.com/Jguer/yay/v9/pkg/types"
"github.com/Jguer/yay/v9/pkg/stringset"
gosrc "github.com/Morganamilo/go-srcinfo"
)
@ -38,7 +38,7 @@ func createDevelDB() error {
}
bases := getBases(info)
toSkip := pkgbuildsToSkip(bases, types.SliceToStringSet(remoteNames))
toSkip := pkgbuildsToSkip(bases, stringset.SliceToStringSet(remoteNames))
_, err = downloadPkgbuilds(bases, toSkip, config.BuildDir)
if err != nil {
return err