Browse Source

chore(yay): lift legacy engine (#2189)

* remove legacy engine

* remove legacy dep handlers

* use prepare for gendb

* remove unused method

* remove aur client old interface

* remove unused menu fns

* remove inactive upgrademenu option

* unexport printInfo
Jo 1 year ago
parent
commit
e28319fece

+ 1 - 1
aur_source_test.go

@@ -102,7 +102,7 @@ func Test_downloadPKGBUILDSourceFanout(t *testing.T) {
 				test: t,
 				test: t,
 			}
 			}
 
 
-			err := downloadPKGBUILDSourceFanout(context.Background(), cmdBuilder, pkgBuildDirs, false, maxConcurrentDownloads)
+			err := downloadPKGBUILDSourceFanout(context.Background(), cmdBuilder, pkgBuildDirs, true, maxConcurrentDownloads)
 			assert.NoError(t, err)
 			assert.NoError(t, err)
 			assert.Equal(t, 5, int(cmdBuilder.passes))
 			assert.Equal(t, 5, int(cmdBuilder.passes))
 		})
 		})

+ 1 - 1
clean.go

@@ -130,7 +130,7 @@ func cleanAUR(ctx context.Context, cfg *settings.Configuration,
 	// Querying the AUR is slow and needs internet so don't do it if we
 	// Querying the AUR is slow and needs internet so don't do it if we
 	// don't need to.
 	// don't need to.
 	if keepCurrent {
 	if keepCurrent {
-		info, errInfo := cfg.Runtime.AURCache.Get(ctx, &aur.Query{
+		info, errInfo := cfg.Runtime.AURClient.Get(ctx, &aur.Query{
 			Needles: cachedPackages,
 			Needles: cachedPackages,
 		})
 		})
 		if errInfo != nil {
 		if errInfo != nil {

+ 6 - 16
cmd.go

@@ -91,11 +91,9 @@ Permanent configuration options:
     --cleanmenu           Give the option to clean build PKGBUILDS
     --cleanmenu           Give the option to clean build PKGBUILDS
     --diffmenu            Give the option to show diffs for build files
     --diffmenu            Give the option to show diffs for build files
     --editmenu            Give the option to edit/view PKGBUILDS
     --editmenu            Give the option to edit/view PKGBUILDS
-    --upgrademenu         Show a detailed list of updates with the option to skip any
     --nocleanmenu         Don't clean build PKGBUILDS
     --nocleanmenu         Don't clean build PKGBUILDS
     --nodiffmenu          Don't show diffs for build files
     --nodiffmenu          Don't show diffs for build files
     --noeditmenu          Don't edit/view PKGBUILDS
     --noeditmenu          Don't edit/view PKGBUILDS
-    --noupgrademenu       Don't show the upgrade menu
     --askremovemake       Ask to remove makedepends after install
     --askremovemake       Ask to remove makedepends after install
     --removemake          Remove makedepends after install
     --removemake          Remove makedepends after install
     --noremovemake        Don't remove makedepends after install
     --noremovemake        Don't remove makedepends after install
@@ -308,10 +306,10 @@ func handleWeb(ctx context.Context, cfg *settings.Configuration, cmdArgs *parser
 	switch {
 	switch {
 	case cmdArgs.ExistsArg("v", "vote"):
 	case cmdArgs.ExistsArg("v", "vote"):
 		return handlePackageVote(ctx, cmdArgs.Targets, cfg.Runtime.AURClient,
 		return handlePackageVote(ctx, cmdArgs.Targets, cfg.Runtime.AURClient,
-			cfg.Runtime.VoteClient, cfg.RequestSplitN, true)
+			cfg.Runtime.VoteClient, true)
 	case cmdArgs.ExistsArg("u", "unvote"):
 	case cmdArgs.ExistsArg("u", "unvote"):
 		return handlePackageVote(ctx, cmdArgs.Targets, cfg.Runtime.AURClient,
 		return handlePackageVote(ctx, cmdArgs.Targets, cfg.Runtime.AURClient,
-			cfg.Runtime.VoteClient, cfg.RequestSplitN, false)
+			cfg.Runtime.VoteClient, false)
 	}
 	}
 
 
 	return nil
 	return nil
@@ -319,11 +317,11 @@ func handleWeb(ctx context.Context, cfg *settings.Configuration, cmdArgs *parser
 
 
 func handleGetpkgbuild(ctx context.Context, cfg *settings.Configuration, cmdArgs *parser.Arguments, dbExecutor download.DBSearcher) error {
 func handleGetpkgbuild(ctx context.Context, cfg *settings.Configuration, cmdArgs *parser.Arguments, dbExecutor download.DBSearcher) error {
 	if cmdArgs.ExistsArg("p", "print") {
 	if cmdArgs.ExistsArg("p", "print") {
-		return printPkgbuilds(dbExecutor, cfg.Runtime.AURCache,
+		return printPkgbuilds(dbExecutor, cfg.Runtime.AURClient,
 			cfg.Runtime.HTTPClient, cmdArgs.Targets, cfg.Mode, cfg.AURURL)
 			cfg.Runtime.HTTPClient, cmdArgs.Targets, cfg.Mode, cfg.AURURL)
 	}
 	}
 
 
-	return getPkgbuilds(ctx, dbExecutor, cfg.Runtime.AURCache, cfg,
+	return getPkgbuilds(ctx, dbExecutor, cfg.Runtime.AURClient, cfg,
 		cmdArgs.Targets, cmdArgs.ExistsArg("f", "force"))
 		cmdArgs.Targets, cmdArgs.ExistsArg("f", "force"))
 }
 }
 
 
@@ -364,11 +362,7 @@ func handleSync(ctx context.Context, cfg *settings.Configuration, cmdArgs *parse
 	case cmdArgs.ExistsArg("i", "info"):
 	case cmdArgs.ExistsArg("i", "info"):
 		return syncInfo(ctx, cfg, cmdArgs, targets, dbExecutor)
 		return syncInfo(ctx, cfg, cmdArgs, targets, dbExecutor)
 	case cmdArgs.ExistsArg("u", "sysupgrade") || len(cmdArgs.Targets) > 0:
 	case cmdArgs.ExistsArg("u", "sysupgrade") || len(cmdArgs.Targets) > 0:
-		if cfg.NewInstallEngine {
-			return syncInstall(ctx, cfg, cmdArgs, dbExecutor)
-		}
-
-		return install(ctx, cfg, cmdArgs, dbExecutor, false)
+		return syncInstall(ctx, cfg, cmdArgs, dbExecutor)
 	case cmdArgs.ExistsArg("y", "refresh"):
 	case cmdArgs.ExistsArg("y", "refresh"):
 		return cfg.Runtime.CmdBuilder.Show(cfg.Runtime.CmdBuilder.BuildPacmanCmd(ctx,
 		return cfg.Runtime.CmdBuilder.Show(cfg.Runtime.CmdBuilder.BuildPacmanCmd(ctx,
 			cmdArgs, cfg.Mode, settings.NoConfirm))
 			cmdArgs, cfg.Mode, settings.NoConfirm))
@@ -424,11 +418,7 @@ func displayNumberMenu(ctx context.Context, cfg *settings.Configuration, pkgS []
 		return nil
 		return nil
 	}
 	}
 
 
-	if cfg.NewInstallEngine {
-		return syncInstall(ctx, cfg, cmdArgs, dbExecutor)
-	}
-
-	return install(ctx, cfg, cmdArgs, dbExecutor, true)
+	return syncInstall(ctx, cfg, cmdArgs, dbExecutor)
 }
 }
 
 
 func syncList(ctx context.Context, cfg *settings.Configuration,
 func syncList(ctx context.Context, cfg *settings.Configuration,

+ 2 - 3
cmd_test.go

@@ -104,15 +104,14 @@ func TestYogurtMenuAURDB(t *testing.T) {
 	}
 	}
 	logger := text.NewLogger(io.Discard, os.Stderr, strings.NewReader("1\n"), true, "test")
 	logger := text.NewLogger(io.Discard, os.Stderr, strings.NewReader("1\n"), true, "test")
 	cfg := &settings.Configuration{
 	cfg := &settings.Configuration{
-		NewInstallEngine: true,
-		RemoveMake:       "no",
+		RemoveMake: "no",
 		Runtime: &settings.Runtime{
 		Runtime: &settings.Runtime{
 			Logger:     logger,
 			Logger:     logger,
 			CmdBuilder: cmdBuilder,
 			CmdBuilder: cmdBuilder,
 			VCSStore:   &vcs.Mock{},
 			VCSStore:   &vcs.Mock{},
 			QueryBuilder: query.NewSourceQueryBuilder(aurCache, logger, "votes", parser.ModeAny, "name",
 			QueryBuilder: query.NewSourceQueryBuilder(aurCache, logger, "votes", parser.ModeAny, "name",
 				true, false, true),
 				true, false, true),
-			AURCache: aurCache,
+			AURClient: aurCache,
 		},
 		},
 	}
 	}
 
 

+ 2 - 2
completions/bash

@@ -72,8 +72,8 @@ _yay() {
           makepkg pacman git gpg gpgflags config requestsplitn sudoloop nosudoloop
           makepkg pacman git gpg gpgflags config requestsplitn sudoloop nosudoloop
           redownload noredownload redownloadall rebuild rebuildall rebuildtree norebuild sortby
           redownload noredownload redownloadall rebuild rebuildall rebuildtree norebuild sortby
           singlelineresults doublelineresults answerclean answerdiff answeredit answerupgrade noanswerclean noanswerdiff
           singlelineresults doublelineresults answerclean answerdiff answeredit answerupgrade noanswerclean noanswerdiff
-          noansweredit noanswerupgrade cleanmenu diffmenu editmenu upgrademenu cleanafter nocleanafter
-          nocleanmenu nodiffmenu noupgrademenu provides noprovides pgpfetch nopgpfetch
+          noansweredit noanswerupgrade cleanmenu diffmenu editmenu cleanafter nocleanafter
+          nocleanmenu nodiffmenu provides noprovides pgpfetch nopgpfetch
           useask nouseask combinedupgrade nocombinedupgrade aur repo makepkgconf
           useask nouseask combinedupgrade nocombinedupgrade aur repo makepkgconf
           nomakepkgconf askremovemake removemake noremovemake completioninterval aururl aurrpcurl
           nomakepkgconf askremovemake removemake noremovemake completioninterval aururl aurrpcurl
           searchby batchinstall nobatchinstall'
           searchby batchinstall nobatchinstall'

+ 0 - 2
completions/fish

@@ -216,11 +216,9 @@ complete -c $progname -n "not $noopt" -l noanswerupgrade -d 'Unset the answer fo
 complete -c $progname -n "not $noopt" -l cleanmenu -d 'Give the option to clean build PKGBUILDS' -f
 complete -c $progname -n "not $noopt" -l cleanmenu -d 'Give the option to clean build PKGBUILDS' -f
 complete -c $progname -n "not $noopt" -l diffmenu -d 'Give the option to show diffs for build files' -f
 complete -c $progname -n "not $noopt" -l diffmenu -d 'Give the option to show diffs for build files' -f
 complete -c $progname -n "not $noopt" -l editmenu -d 'Give the option to edit/view PKGBUILDS' -f
 complete -c $progname -n "not $noopt" -l editmenu -d 'Give the option to edit/view PKGBUILDS' -f
-complete -c $progname -n "not $noopt" -l upgrademenu -d 'Show a detailed list of updates with the option to skip any' -f
 complete -c $progname -n "not $noopt" -l nocleanmenu -d 'Do not clean build PKGBUILDS' -f
 complete -c $progname -n "not $noopt" -l nocleanmenu -d 'Do not clean build PKGBUILDS' -f
 complete -c $progname -n "not $noopt" -l nodiffmenu -d 'Do not show diffs for build files' -f
 complete -c $progname -n "not $noopt" -l nodiffmenu -d 'Do not show diffs for build files' -f
 complete -c $progname -n "not $noopt" -l noeditmenu -d 'Do not edit/view PKGBUILDS' -f
 complete -c $progname -n "not $noopt" -l noeditmenu -d 'Do not edit/view PKGBUILDS' -f
-complete -c $progname -n "not $noopt" -l noupgrademenu -d 'Do not show the upgrade menu' -f
 complete -c $progname -n "not $noopt" -l askremovemake -d 'Ask to remove make deps after install' -f
 complete -c $progname -n "not $noopt" -l askremovemake -d 'Ask to remove make deps after install' -f
 complete -c $progname -n "not $noopt" -l removemake -d 'Remove make deps after install' -f
 complete -c $progname -n "not $noopt" -l removemake -d 'Remove make deps after install' -f
 complete -c $progname -n "not $noopt" -l noremovemake -d 'Do not remove make deps after install' -f
 complete -c $progname -n "not $noopt" -l noremovemake -d 'Do not remove make deps after install' -f

+ 0 - 2
completions/zsh

@@ -70,11 +70,9 @@ _pacman_opts_common=(
 	'--cleanmenu[Give the option to clean build PKGBUILDS]'
 	'--cleanmenu[Give the option to clean build PKGBUILDS]'
 	'--diffmenu[Give the option to show diffs for build files]'
 	'--diffmenu[Give the option to show diffs for build files]'
 	'--editmenu[Give the option to edit/view PKGBUILDS]'
 	'--editmenu[Give the option to edit/view PKGBUILDS]'
-	'--upgrademenu[Show a detailed list of updates with the option to skip any]'
 	"--nocleanmenu[Don't clean build PKGBUILDS]"
 	"--nocleanmenu[Don't clean build PKGBUILDS]"
 	"--nodiffmenu[Don't show diffs for build files]"
 	"--nodiffmenu[Don't show diffs for build files]"
 	"--noeditmenu[Don't edit/view PKGBUILDS]"
 	"--noeditmenu[Don't edit/view PKGBUILDS]"
-	"--noupgrademenu[Don't show the upgrade menu]"
 	"--askremovemake[Ask to remove makedepends after install]"
 	"--askremovemake[Ask to remove makedepends after install]"
 	"--removemake[Remove makedepends after install]"
 	"--removemake[Remove makedepends after install]"
 	"--noremovemake[Don't remove makedepends after install]"
 	"--noremovemake[Don't remove makedepends after install]"

+ 1 - 16
doc/yay.8

@@ -82,7 +82,7 @@ packages.
 Displays a list of packages matching the search terms and prompts the user on
 Displays a list of packages matching the search terms and prompts the user on
 which packages to install (yogurt mode).
 which packages to install (yogurt mode).
 
 
-The first search term is used to query the different sources and 
+The first search term is used to query the different sources and
 the following search terms are used to narrow the search results
 the following search terms are used to narrow the search results
 through exact matching.
 through exact matching.
 
 
@@ -311,17 +311,6 @@ before building.
 recommended to edit pkgbuild variables unless you know what you are doing.
 recommended to edit pkgbuild variables unless you know what you are doing.
 
 
 .TP
 .TP
-.B \-\-upgrademenu
-Show a detailed list of updates in a similar format to VerbosePkgLists.
-Upgrades can also be skipped using numbers, number ranges or repo names.
-Additionally ^ can be used to invert the selection.
-
-\fBWarning\fR: It is not recommended to skip updates from the repositories as
-this can lead to partial upgrades. This feature is intended to easily skip AUR
-updates on the fly that may be broken or have a long compile time. Ultimately
-it is up to the user what upgrades they skip.
-
-.TP
 .B \-\-nocleanmenu
 .B \-\-nocleanmenu
 Do not show the clean menu.
 Do not show the clean menu.
 
 
@@ -334,10 +323,6 @@ Do not show the diff menu.
 Do not show the edit menu.
 Do not show the edit menu.
 
 
 .TP
 .TP
-.B \-\-noupgrademenu
-Do not show the upgrade menu.
-
-.TP
 .B \-\-askremovemake
 .B \-\-askremovemake
 Ask to remove makedepends after installing packages.
 Ask to remove makedepends after installing packages.
 
 

+ 0 - 1
go.mod

@@ -36,7 +36,6 @@ require github.com/hashicorp/go-multierror v1.1.1
 require (
 require (
 	github.com/hashicorp/errwrap v1.1.0 // indirect
 	github.com/hashicorp/errwrap v1.1.0 // indirect
 	github.com/mitchellh/mapstructure v1.5.0 // indirect
 	github.com/mitchellh/mapstructure v1.5.0 // indirect
-	github.com/stretchr/objx v0.5.0 // indirect
 )
 )
 
 
 go 1.19
 go 1.19

+ 0 - 15
go.sum

@@ -17,8 +17,6 @@ github.com/bradleyjkemp/cupaloy v2.3.0+incompatible/go.mod h1:Au1Xw1sgaJ5iSFktEh
 github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
 github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
 github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
 github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
 github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
 github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
-github.com/deckarep/golang-set/v2 v2.2.0 h1:2pMQd3Soi6qfw7E5MMKaEh5W5ES18bW3AbFFnGl6LgQ=
-github.com/deckarep/golang-set/v2 v2.2.0/go.mod h1:VAky9rY/yGXJOLEDv3OMci+7wtDpOF4IN+y82NBOac4=
 github.com/deckarep/golang-set/v2 v2.3.0 h1:qs18EKUfHm2X9fA50Mr/M5hccg2tNnVqsiBImnyDs0g=
 github.com/deckarep/golang-set/v2 v2.3.0 h1:qs18EKUfHm2X9fA50Mr/M5hccg2tNnVqsiBImnyDs0g=
 github.com/deckarep/golang-set/v2 v2.3.0/go.mod h1:VAky9rY/yGXJOLEDv3OMci+7wtDpOF4IN+y82NBOac4=
 github.com/deckarep/golang-set/v2 v2.3.0/go.mod h1:VAky9rY/yGXJOLEDv3OMci+7wtDpOF4IN+y82NBOac4=
 github.com/h2non/parth v0.0.0-20190131123155-b4df798d6542 h1:2VTzZjLZBgl62/EtslCrtky5vbi9dd7HrQPQIx6wqiw=
 github.com/h2non/parth v0.0.0-20190131123155-b4df798d6542 h1:2VTzZjLZBgl62/EtslCrtky5vbi9dd7HrQPQIx6wqiw=
@@ -38,8 +36,6 @@ github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyua
 github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo=
 github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo=
 github.com/nbio/st v0.0.0-20140626010706-e9e8d9816f32 h1:W6apQkHrMkS0Muv8G/TipAy/FJl/rCYT0+EuS8+Z0z4=
 github.com/nbio/st v0.0.0-20140626010706-e9e8d9816f32 h1:W6apQkHrMkS0Muv8G/TipAy/FJl/rCYT0+EuS8+Z0z4=
 github.com/nbio/st v0.0.0-20140626010706-e9e8d9816f32/go.mod h1:9wM+0iRr9ahx58uYLpLIr5fm8diHn0JbqRycJi6w0Ms=
 github.com/nbio/st v0.0.0-20140626010706-e9e8d9816f32/go.mod h1:9wM+0iRr9ahx58uYLpLIr5fm8diHn0JbqRycJi6w0Ms=
-github.com/ohler55/ojg v1.17.5 h1:SY6/cdhVzsLinNFIBRNSWhJgihvEWco5Y0TJe46XJ1Y=
-github.com/ohler55/ojg v1.17.5/go.mod h1:7Ghirupn8NC8hSSDpI0gcjorPxj+vSVIONDWfliHR1k=
 github.com/ohler55/ojg v1.18.5 h1:tzn5LJtkSyXowCo8SlGieU0zEc7WF4143Ri9MYlQy7Q=
 github.com/ohler55/ojg v1.18.5 h1:tzn5LJtkSyXowCo8SlGieU0zEc7WF4143Ri9MYlQy7Q=
 github.com/ohler55/ojg v1.18.5/go.mod h1:uHcD1ErbErC27Zhb5Df2jUjbseLLcmOCo6oxSr3jZxo=
 github.com/ohler55/ojg v1.18.5/go.mod h1:uHcD1ErbErC27Zhb5Df2jUjbseLLcmOCo6oxSr3jZxo=
 github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
 github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
@@ -47,16 +43,11 @@ github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINE
 github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
 github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
 github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
 github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
 github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
 github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
-github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=
 github.com/stretchr/objx v0.5.0 h1:1zr/of2m5FGMsad5YfcqgdqdWrIhu+EBEJRhR1U7z/c=
 github.com/stretchr/objx v0.5.0 h1:1zr/of2m5FGMsad5YfcqgdqdWrIhu+EBEJRhR1U7z/c=
-github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo=
 github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
 github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
 github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
 github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
 github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
 github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
 github.com/stretchr/testify v1.7.2/go.mod h1:R6va5+xMeoiuVRoj+gSkQ7d3FALtqAAGI1FQKckRals=
 github.com/stretchr/testify v1.7.2/go.mod h1:R6va5+xMeoiuVRoj+gSkQ7d3FALtqAAGI1FQKckRals=
-github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
-github.com/stretchr/testify v1.8.2 h1:+h33VjcLVPDHtOdpUCuF+7gSuG3yGIftsP1YvFihtJ8=
-github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
 github.com/stretchr/testify v1.8.3 h1:RP3t2pwF7cMEbC1dqtB6poj3niw/9gnV4Cjg5oW5gtY=
 github.com/stretchr/testify v1.8.3 h1:RP3t2pwF7cMEbC1dqtB6poj3niw/9gnV4Cjg5oW5gtY=
 github.com/stretchr/testify v1.8.3/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo=
 github.com/stretchr/testify v1.8.3/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo=
 github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
 github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
@@ -73,22 +64,16 @@ golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7w
 golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.6.0 h1:MVltZSvRTcU2ljQOhs94SXPftV6DCNnZViHeQps87pQ=
-golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.8.0 h1:EBmGv8NaZBZTWvrbjNoL6HVt+IVy3QDQpJs7VRIw3tU=
 golang.org/x/sys v0.8.0 h1:EBmGv8NaZBZTWvrbjNoL6HVt+IVy3QDQpJs7VRIw3tU=
 golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
 golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
 golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
 golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
-golang.org/x/term v0.6.0 h1:clScbb1cHjoCkyRbWwBEUZ5H/tIFu5TAXIqaZD0Gcjw=
-golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U=
 golang.org/x/term v0.8.0 h1:n5xxQn2i3PC0yLAbjTpNT85q/Kgzcr2gIoX9OrJUols=
 golang.org/x/term v0.8.0 h1:n5xxQn2i3PC0yLAbjTpNT85q/Kgzcr2gIoX9OrJUols=
 golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo=
 golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo=
 golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
 golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
 golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
 golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
 golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
 golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
 golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ=
 golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ=
-golang.org/x/text v0.8.0 h1:57P1ETyNKtuIjB4SRd15iJxuhj8Gc416Y78H3qgMh68=
-golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8=
 golang.org/x/text v0.9.0 h1:2sjJmO8cDvYveuX97RDLsxlyUxLl+GHoLxBiRdHllBE=
 golang.org/x/text v0.9.0 h1:2sjJmO8cDvYveuX97RDLsxlyUxLl+GHoLxBiRdHllBE=
 golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8=
 golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8=
 golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
 golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=

+ 0 - 681
install.go

@@ -6,28 +6,13 @@ import (
 	"fmt"
 	"fmt"
 	"os"
 	"os"
 	"path/filepath"
 	"path/filepath"
-	"strconv"
 	"strings"
 	"strings"
-	"sync"
 
 
-	alpm "github.com/Jguer/go-alpm/v2"
-	gosrc "github.com/Morganamilo/go-srcinfo"
-	mapset "github.com/deckarep/golang-set/v2"
 	"github.com/leonelquinteros/gotext"
 	"github.com/leonelquinteros/gotext"
 
 
-	"github.com/Jguer/yay/v12/pkg/completion"
-	"github.com/Jguer/yay/v12/pkg/db"
-	"github.com/Jguer/yay/v12/pkg/dep"
-	"github.com/Jguer/yay/v12/pkg/download"
-	"github.com/Jguer/yay/v12/pkg/menus"
-	"github.com/Jguer/yay/v12/pkg/pgp"
-	"github.com/Jguer/yay/v12/pkg/query"
 	"github.com/Jguer/yay/v12/pkg/settings"
 	"github.com/Jguer/yay/v12/pkg/settings"
 	"github.com/Jguer/yay/v12/pkg/settings/exe"
 	"github.com/Jguer/yay/v12/pkg/settings/exe"
 	"github.com/Jguer/yay/v12/pkg/settings/parser"
 	"github.com/Jguer/yay/v12/pkg/settings/parser"
-	"github.com/Jguer/yay/v12/pkg/srcinfo"
-	"github.com/Jguer/yay/v12/pkg/stringset"
-	"github.com/Jguer/yay/v12/pkg/text"
 	"github.com/Jguer/yay/v12/pkg/vcs"
 	"github.com/Jguer/yay/v12/pkg/vcs"
 )
 )
 
 
@@ -84,309 +69,6 @@ func asexp(ctx context.Context,
 	return setPkgReason(ctx, cmdBuilder, mode, cmdArgs, pkgs, true)
 	return setPkgReason(ctx, cmdBuilder, mode, cmdArgs, pkgs, true)
 }
 }
 
 
-// Install handles package installs.
-func install(ctx context.Context, cfg *settings.Configuration,
-	cmdArgs *parser.Arguments, dbExecutor db.Executor, ignoreProviders bool,
-) error {
-	var (
-		do              *dep.Order
-		srcinfos        map[string]*gosrc.Srcinfo
-		noDeps          = cmdArgs.ExistsDouble("d", "nodeps")
-		noCheck         = strings.Contains(cfg.MFlags, "--nocheck")
-		assumeInstalled = cmdArgs.GetArgs("assume-installed")
-		sysupgradeArg   = cmdArgs.ExistsArg("u", "sysupgrade")
-		refreshArg      = cmdArgs.ExistsArg("y", "refresh")
-		warnings        = query.NewWarnings(cfg.Runtime.Logger)
-	)
-
-	if noDeps {
-		cfg.Runtime.CmdBuilder.AddMakepkgFlag("-d")
-	}
-
-	if cfg.Mode.AtLeastRepo() {
-		if cfg.CombinedUpgrade {
-			if refreshArg {
-				if errR := earlyRefresh(ctx, cfg, cfg.Runtime.CmdBuilder, cmdArgs); errR != nil {
-					return fmt.Errorf("%s - %w", gotext.Get("error refreshing databases"), errR)
-				}
-				cmdArgs.DelArg("y", "refresh")
-			}
-		} else if refreshArg || sysupgradeArg || len(cmdArgs.Targets) > 0 {
-			if errP := earlyPacmanCall(ctx, cfg, cmdArgs, dbExecutor); errP != nil {
-				return errP
-			}
-		}
-	}
-
-	// we may have done -Sy, our handle now has an old
-	// database.
-	if errRefresh := dbExecutor.RefreshHandle(); errRefresh != nil {
-		return errRefresh
-	}
-
-	remoteNames := dbExecutor.InstalledRemotePackageNames()
-	localNames := dbExecutor.InstalledSyncPackageNames()
-
-	remoteNamesCache := mapset.NewThreadUnsafeSet(remoteNames...)
-	localNamesCache := stringset.FromSlice(localNames)
-
-	requestTargets := cmdArgs.Copy().Targets
-
-	// create the arguments to pass for the repo install
-	arguments := cmdArgs.Copy()
-	arguments.DelArg("asdeps", "asdep")
-	arguments.DelArg("asexplicit", "asexp")
-	arguments.Op = "S"
-	arguments.ClearTargets()
-
-	if cfg.Mode == parser.ModeAUR {
-		arguments.DelArg("u", "sysupgrade")
-	}
-
-	// if we are doing -u also request all packages needing update
-	if sysupgradeArg {
-		var errSysUp error
-
-		requestTargets, errSysUp = addUpgradeTargetsToArgs(ctx, cfg, dbExecutor, cmdArgs, requestTargets, arguments)
-		if errSysUp != nil {
-			return errSysUp
-		}
-	}
-
-	targets := stringset.FromSlice(cmdArgs.Targets)
-
-	dp, err := dep.GetPool(ctx, requestTargets,
-		warnings, dbExecutor, cfg.Runtime.AURClient, cfg.Mode,
-		ignoreProviders, settings.NoConfirm, cfg.Provides, string(cfg.ReBuild), cfg.RequestSplitN, noDeps, noCheck, assumeInstalled)
-	if err != nil {
-		return err
-	}
-
-	if errC := dp.CheckMissing(noDeps, noCheck); errC != nil {
-		return errC
-	}
-
-	if len(dp.Aur) == 0 {
-		if !cfg.CombinedUpgrade {
-			if sysupgradeArg {
-				fmt.Println(gotext.Get(" there is nothing to do"))
-			}
-
-			return nil
-		}
-
-		cmdArgs.Op = "S"
-		cmdArgs.DelArg("y", "refresh")
-
-		if arguments.ExistsArg("ignore") {
-			cmdArgs.CreateOrAppendOption("ignore", arguments.GetArgs("ignore")...)
-		}
-
-		return cfg.Runtime.CmdBuilder.Show(cfg.Runtime.CmdBuilder.BuildPacmanCmd(ctx,
-			cmdArgs, cfg.Mode, settings.NoConfirm))
-	}
-
-	conflicts, errCC := dp.CheckConflicts(cfg.UseAsk, settings.NoConfirm, noDeps)
-	if errCC != nil {
-		return errCC
-	}
-
-	do = dep.GetOrder(dp, noDeps, noCheck)
-
-	for _, pkg := range do.Repo {
-		arguments.AddTarget(pkg.DB().Name() + "/" + pkg.Name())
-	}
-
-	for _, pkg := range dp.Groups {
-		arguments.AddTarget(pkg)
-	}
-
-	if len(do.Aur) == 0 && len(arguments.Targets) == 0 &&
-		(!cmdArgs.ExistsArg("u", "sysupgrade") || cfg.Mode == parser.ModeAUR) {
-		fmt.Println(gotext.Get(" there is nothing to do"))
-		return nil
-	}
-
-	do.Print()
-	fmt.Println()
-
-	pkgbuildDirs := make(map[string]string, len(do.Aur))
-
-	for _, base := range do.Aur {
-		dir := filepath.Join(cfg.BuildDir, base.Pkgbase())
-		pkgbuildDirs[base.Pkgbase()] = dir
-	}
-
-	if cfg.CleanAfter {
-		defer func() {
-			cleanAfter(ctx, cfg, cfg.Runtime.CmdBuilder, pkgbuildDirs)
-		}()
-	}
-
-	if do.HasMake() {
-		switch cfg.RemoveMake {
-		case "yes":
-			defer func() {
-				err = removeMake(ctx, cfg, cfg.Runtime.CmdBuilder, do.GetMake(), cmdArgs)
-			}()
-
-		case "no":
-			break
-		default:
-			if text.ContinueTask(os.Stdin, gotext.Get("Remove make dependencies after install?"), false, settings.NoConfirm) {
-				defer func() {
-					err = removeMake(ctx, cfg, cfg.Runtime.CmdBuilder, do.GetMake(), cmdArgs)
-				}()
-			}
-		}
-	}
-
-	if errCleanMenu := menus.Clean(os.Stdout, cfg.CleanMenu,
-		pkgbuildDirs,
-		remoteNamesCache, settings.NoConfirm, cfg.AnswerClean); errCleanMenu != nil {
-		if errors.As(errCleanMenu, &settings.ErrUserAbort{}) {
-			return errCleanMenu
-		}
-
-		text.Errorln(errCleanMenu)
-	}
-
-	toSkip := pkgbuildsToSkip(cfg, do.Aur, targets)
-	toClone := make([]string, 0, len(do.Aur))
-
-	for _, base := range do.Aur {
-		if !toSkip.Get(base.Pkgbase()) {
-			toClone = append(toClone, base.Pkgbase())
-		}
-	}
-
-	if toSkipSlice := toSkip.ToSlice(); len(toSkipSlice) != 0 {
-		text.OperationInfoln(
-			gotext.Get("PKGBUILD up to date, Skipping (%d/%d): %s",
-				len(toSkipSlice), len(toClone), text.Cyan(strings.Join(toSkipSlice, ", "))))
-	}
-
-	cloned, errA := download.AURPKGBUILDRepos(ctx,
-		cfg.Runtime.CmdBuilder, toClone, cfg.AURURL, cfg.BuildDir, false)
-	if errA != nil {
-		return errA
-	}
-
-	if errDiffMenu := menus.Diff(ctx, cfg.Runtime.CmdBuilder, os.Stdout, pkgbuildDirs,
-		cfg.DiffMenu, remoteNamesCache,
-		cloned, settings.NoConfirm, cfg.AnswerDiff); errDiffMenu != nil {
-		if errors.As(errDiffMenu, &settings.ErrUserAbort{}) {
-			return errDiffMenu
-		}
-
-		text.Errorln(errDiffMenu)
-	}
-
-	if errM := mergePkgbuilds(ctx, cfg.Runtime.CmdBuilder, pkgbuildDirs); errM != nil {
-		return errM
-	}
-
-	srcinfos, err = srcinfo.ParseSrcinfoFilesByBase(pkgbuildDirs, true)
-	if err != nil {
-		return err
-	}
-
-	if errEditMenu := menus.Edit(os.Stdout, cfg.Runtime.Logger, cfg.EditMenu, pkgbuildDirs,
-		cfg.Editor, cfg.EditorFlags, remoteNamesCache, srcinfos,
-		settings.NoConfirm, cfg.AnswerEdit); errEditMenu != nil {
-		if errors.As(errEditMenu, &settings.ErrUserAbort{}) {
-			return errEditMenu
-		}
-
-		text.Errorln(errEditMenu)
-	}
-
-	if errI := confirmIncompatibleInstall(srcinfos, dbExecutor); errI != nil {
-		return errI
-	}
-
-	if cfg.PGPFetch {
-		if _, errCPK := pgp.CheckPgpKeys(ctx, pkgbuildDirs, srcinfos, cfg.Runtime.CmdBuilder, settings.NoConfirm); errCPK != nil {
-			return errCPK
-		}
-	}
-
-	if !cfg.CombinedUpgrade {
-		arguments.DelArg("u", "sysupgrade")
-	}
-
-	if len(arguments.Targets) > 0 || arguments.ExistsArg("u") {
-		if errShow := cfg.Runtime.CmdBuilder.Show(cfg.Runtime.CmdBuilder.BuildPacmanCmd(ctx,
-			arguments, cfg.Mode, settings.NoConfirm)); errShow != nil {
-			return errors.New(gotext.Get("error installing repo packages"))
-		}
-
-		deps := make([]string, 0)
-		exp := make([]string, 0)
-
-		for _, pkg := range do.Repo {
-			if !dp.Explicit.Get(pkg.Name()) && !localNamesCache.Get(pkg.Name()) && !remoteNamesCache.Contains(pkg.Name()) {
-				deps = append(deps, pkg.Name())
-
-				continue
-			}
-
-			if cmdArgs.ExistsArg("asdeps", "asdep") && dp.Explicit.Get(pkg.Name()) {
-				deps = append(deps, pkg.Name())
-			} else if cmdArgs.ExistsArg("asexp", "asexplicit") && dp.Explicit.Get(pkg.Name()) {
-				exp = append(exp, pkg.Name())
-			}
-		}
-
-		if errDeps := asdeps(ctx, cfg.Runtime.CmdBuilder, cfg.Mode, cmdArgs, deps); errDeps != nil {
-			return errDeps
-		}
-
-		if errExp := asexp(ctx, cfg.Runtime.CmdBuilder, cfg.Mode, cmdArgs, exp); errExp != nil {
-			return errExp
-		}
-	}
-
-	go func() {
-		_ = completion.Update(ctx, cfg.Runtime.HTTPClient, dbExecutor,
-			cfg.AURURL, cfg.CompletionPath, cfg.CompletionInterval, false)
-	}()
-
-	if errP := downloadPKGBUILDSourceFanout(ctx,
-		cfg.Runtime.CmdBuilder,
-		pkgbuildDirs,
-		true, cfg.MaxConcurrentDownloads); errP != nil {
-		text.Errorln(errP)
-	}
-
-	if errB := buildInstallPkgbuilds(ctx, cfg, cmdArgs, dbExecutor, dp, do,
-		srcinfos, true, conflicts, noDeps, noCheck); errB != nil {
-		return errB
-	}
-
-	return nil
-}
-
-func addUpgradeTargetsToArgs(ctx context.Context, cfg *settings.Configuration, dbExecutor db.Executor,
-	cmdArgs *parser.Arguments, requestTargets []string, arguments *parser.Arguments,
-) ([]string, error) {
-	ignore, targets, errUp := sysupgradeTargets(ctx, cfg, dbExecutor, cmdArgs.ExistsDouble("u", "sysupgrade"))
-	if errUp != nil {
-		return nil, errUp
-	}
-
-	for _, up := range targets {
-		cmdArgs.AddTarget(up)
-		requestTargets = append(requestTargets, up)
-	}
-
-	if len(ignore) > 0 {
-		arguments.CreateOrAppendOption("ignore", ignore.ToSlice()...)
-	}
-
-	return requestTargets, nil
-}
-
 func removeMake(ctx context.Context, config *settings.Configuration,
 func removeMake(ctx context.Context, config *settings.Configuration,
 	cmdBuilder exe.ICmdBuilder, makeDeps []string, cmdArgs *parser.Arguments,
 	cmdBuilder exe.ICmdBuilder, makeDeps []string, cmdArgs *parser.Arguments,
 ) error {
 ) error {
@@ -410,55 +92,6 @@ func removeMake(ctx context.Context, config *settings.Configuration,
 	return err
 	return err
 }
 }
 
 
-func inRepos(dbExecutor db.Executor, pkg string) bool {
-	target := dep.ToTarget(pkg)
-
-	if target.DB == "aur" {
-		return false
-	} else if target.DB != "" {
-		return true
-	}
-
-	previousHideMenus := settings.HideMenus
-	settings.HideMenus = true
-	exists := dbExecutor.SyncSatisfierExists(target.DepString())
-	settings.HideMenus = previousHideMenus
-
-	return exists || len(dbExecutor.PackagesFromGroup(target.Name)) > 0
-}
-
-func earlyPacmanCall(ctx context.Context, cfg *settings.Configuration,
-	cmdArgs *parser.Arguments, dbExecutor db.Executor,
-) error {
-	arguments := cmdArgs.Copy()
-	arguments.Op = "S"
-	targets := cmdArgs.Targets
-	cmdArgs.ClearTargets()
-	arguments.ClearTargets()
-
-	if cfg.Mode == parser.ModeRepo {
-		arguments.Targets = targets
-	} else {
-		// separate aur and repo targets
-		for _, target := range targets {
-			if inRepos(dbExecutor, target) {
-				arguments.AddTarget(target)
-			} else {
-				cmdArgs.AddTarget(target)
-			}
-		}
-	}
-
-	if cmdArgs.ExistsArg("y", "refresh") || cmdArgs.ExistsArg("u", "sysupgrade") || len(arguments.Targets) > 0 {
-		if err := cfg.Runtime.CmdBuilder.Show(cfg.Runtime.CmdBuilder.BuildPacmanCmd(ctx,
-			arguments, cfg.Mode, settings.NoConfirm)); err != nil {
-			return errors.New(gotext.Get("error installing repo packages"))
-		}
-	}
-
-	return nil
-}
-
 func earlyRefresh(ctx context.Context, cfg *settings.Configuration, cmdBuilder exe.ICmdBuilder, cmdArgs *parser.Arguments) error {
 func earlyRefresh(ctx context.Context, cfg *settings.Configuration, cmdBuilder exe.ICmdBuilder, cmdArgs *parser.Arguments) error {
 	arguments := cmdArgs.Copy()
 	arguments := cmdArgs.Copy()
 	if cfg.CombinedUpgrade {
 	if cfg.CombinedUpgrade {
@@ -473,41 +106,6 @@ func earlyRefresh(ctx context.Context, cfg *settings.Configuration, cmdBuilder e
 		arguments, cfg.Mode, settings.NoConfirm))
 		arguments, cfg.Mode, settings.NoConfirm))
 }
 }
 
 
-func confirmIncompatibleInstall(srcinfos map[string]*gosrc.Srcinfo, dbExecutor db.Executor) error {
-	incompatible := []string{}
-
-	alpmArch, err := dbExecutor.AlpmArchitectures()
-	if err != nil {
-		return err
-	}
-
-nextpkg:
-	for base, srcinfo := range srcinfos {
-		for _, arch := range srcinfo.Arch {
-			if db.ArchIsSupported(alpmArch, arch) {
-				continue nextpkg
-			}
-		}
-		incompatible = append(incompatible, base)
-	}
-
-	if len(incompatible) > 0 {
-		text.Warnln(gotext.Get("The following packages are not compatible with your architecture:"))
-
-		for _, pkg := range incompatible {
-			fmt.Print("  " + text.Cyan(pkg))
-		}
-
-		fmt.Println()
-
-		if !text.ContinueTask(os.Stdin, gotext.Get("Try to build them anyway?"), true, settings.NoConfirm) {
-			return &settings.ErrUserAbort{}
-		}
-	}
-
-	return nil
-}
-
 func parsePackageList(ctx context.Context, cmdBuilder exe.ICmdBuilder,
 func parsePackageList(ctx context.Context, cmdBuilder exe.ICmdBuilder,
 	dir string,
 	dir string,
 ) (pkgdests map[string]string, pkgVersion string, err error) {
 ) (pkgdests map[string]string, pkgVersion string, err error) {
@@ -547,32 +145,6 @@ func parsePackageList(ctx context.Context, cmdBuilder exe.ICmdBuilder,
 	return pkgdests, pkgVersion, nil
 	return pkgdests, pkgVersion, nil
 }
 }
 
 
-func pkgbuildsToSkip(cfg *settings.Configuration, bases []dep.Base, targets stringset.StringSet) stringset.StringSet {
-	toSkip := make(stringset.StringSet)
-
-	for _, base := range bases {
-		isTarget := false
-		for _, pkg := range base {
-			isTarget = isTarget || targets.Get(pkg.Name)
-		}
-
-		if (cfg.ReDownload == "yes" && isTarget) || cfg.ReDownload == "all" {
-			continue
-		}
-
-		dir := filepath.Join(cfg.BuildDir, base.Pkgbase(), ".SRCINFO")
-		pkgbuild, err := gosrc.ParseFile(dir)
-
-		if err == nil {
-			if db.VerCmp(pkgbuild.Version(), base.Version()) >= 0 {
-				toSkip.Set(base.Pkgbase())
-			}
-		}
-	}
-
-	return toSkip
-}
-
 func gitMerge(ctx context.Context, cmdBuilder exe.ICmdBuilder, dir string) error {
 func gitMerge(ctx context.Context, cmdBuilder exe.ICmdBuilder, dir string) error {
 	_, stderr, err := cmdBuilder.Capture(
 	_, stderr, err := cmdBuilder.Capture(
 		cmdBuilder.BuildGitCmd(ctx,
 		cmdBuilder.BuildGitCmd(ctx,
@@ -602,222 +174,6 @@ func mergePkgbuilds(ctx context.Context, cmdBuilder exe.ICmdBuilder, pkgbuildDir
 	return nil
 	return nil
 }
 }
 
 
-func buildInstallPkgbuilds(
-	ctx context.Context,
-	cfg *settings.Configuration,
-	cmdArgs *parser.Arguments,
-	dbExecutor db.Executor,
-	dp *dep.Pool,
-	do *dep.Order,
-	srcinfos map[string]*gosrc.Srcinfo,
-	incompatible bool,
-	conflicts stringset.MapStringSet, noDeps, noCheck bool,
-) error {
-	deps := make([]string, 0)
-	exp := make([]string, 0)
-	pkgArchives := make([]string, 0)
-	oldConfirm := settings.NoConfirm
-	settings.NoConfirm = true
-
-	// remotenames: names of all non repo packages on the system
-	remoteNames := dbExecutor.InstalledRemotePackageNames()
-	localNames := dbExecutor.InstalledSyncPackageNames()
-
-	// cache as a stringset. maybe make it return a string set in the first
-	// place
-	remoteNamesCache := stringset.FromSlice(remoteNames)
-	localNamesCache := stringset.FromSlice(localNames)
-
-	for i, base := range do.Aur {
-		pkg := base.Pkgbase()
-		dir := filepath.Join(cfg.BuildDir, pkg)
-		built := true
-
-		satisfied := true
-	all:
-		for _, pkg := range base {
-			for _, dep := range dep.ComputeCombinedDepList(pkg, noDeps, noCheck) {
-				if !dp.AlpmExecutor.LocalSatisfierExists(dep) {
-					satisfied = false
-					text.Warnln(gotext.Get("%s not satisfied, flushing install queue", dep))
-
-					break all
-				}
-			}
-		}
-
-		if !satisfied || !cfg.BatchInstall {
-			text.Debugln("non batch installing archives:", pkgArchives)
-			errArchive := installPkgArchive(ctx, cfg.Runtime.CmdBuilder,
-				cfg.Mode, cfg.Runtime.VCSStore, cmdArgs, pkgArchives, settings.NoConfirm)
-			errReason := setInstallReason(ctx, cfg.Runtime.CmdBuilder, cfg.Mode, cmdArgs, deps, exp)
-
-			deps = make([]string, 0)
-			exp = make([]string, 0)
-			pkgArchives = make([]string, 0) // reset the pkgarchives
-
-			if errArchive != nil || errReason != nil {
-				if i != 0 {
-					go cfg.Runtime.VCSStore.RemovePackages([]string{do.Aur[i-1].String()})
-				}
-
-				if errArchive != nil {
-					return errArchive
-				}
-
-				return errReason
-			}
-		}
-
-		srcInfo := srcinfos[pkg]
-
-		args := []string{"--nobuild", "-fC"}
-
-		if incompatible {
-			args = append(args, "--ignorearch")
-		}
-
-		// pkgver bump
-		if err := cfg.Runtime.CmdBuilder.Show(
-			cfg.Runtime.CmdBuilder.BuildMakepkgCmd(ctx, dir, args...)); err != nil {
-			return errors.New(gotext.Get("error making: %s", base.String()))
-		}
-
-		pkgdests, pkgVersion, errList := parsePackageList(ctx, cfg.Runtime.CmdBuilder, dir)
-		if errList != nil {
-			return errList
-		}
-
-		isExplicit := false
-		for _, b := range base {
-			isExplicit = isExplicit || dp.Explicit.Get(b.Name)
-		}
-
-		if cfg.ReBuild == "no" || (cfg.ReBuild == "yes" && !isExplicit) {
-			for _, split := range base {
-				pkgdest, ok := pkgdests[split.Name]
-				if !ok {
-					return &PkgDestNotInListError{split.Name}
-				}
-
-				if _, errStat := os.Stat(pkgdest); os.IsNotExist(errStat) {
-					built = false
-				} else if errStat != nil {
-					return errStat
-				}
-			}
-		} else {
-			built = false
-		}
-
-		if cmdArgs.ExistsArg("needed") {
-			installed := true
-			for _, split := range base {
-				installed = dp.AlpmExecutor.IsCorrectVersionInstalled(split.Name, pkgVersion)
-			}
-
-			if installed {
-				err := cfg.Runtime.CmdBuilder.Show(
-					cfg.Runtime.CmdBuilder.BuildMakepkgCmd(ctx,
-						dir, "-c", "--nobuild", "--noextract", "--ignorearch"))
-				if err != nil {
-					return errors.New(gotext.Get("error making: %s", err))
-				}
-
-				fmt.Fprintln(os.Stdout, gotext.Get("%s is up to date -- skipping", text.Cyan(pkg+"-"+pkgVersion)))
-
-				continue
-			}
-		}
-
-		if built {
-			err := cfg.Runtime.CmdBuilder.Show(
-				cfg.Runtime.CmdBuilder.BuildMakepkgCmd(ctx,
-					dir, "-c", "--nobuild", "--noextract", "--ignorearch"))
-			if err != nil {
-				return errors.New(gotext.Get("error making: %s", err))
-			}
-
-			text.Warnln(gotext.Get("%s already made -- skipping build", text.Cyan(pkg+"-"+pkgVersion)))
-		} else {
-			args := []string{"-cf", "--noconfirm", "--noextract", "--noprepare", "--holdver"}
-
-			if incompatible {
-				args = append(args, "--ignorearch")
-			}
-
-			if errMake := cfg.Runtime.CmdBuilder.Show(
-				cfg.Runtime.CmdBuilder.BuildMakepkgCmd(ctx,
-					dir, args...)); errMake != nil {
-				return errors.New(gotext.Get("error making: %s", base.String()))
-			}
-		}
-
-		// conflicts have been checked so answer y for them
-		if cfg.UseAsk && cmdArgs.ExistsArg("ask") {
-			ask, _ := strconv.Atoi(cmdArgs.Options["ask"].First())
-			uask := alpm.QuestionType(ask) | alpm.QuestionTypeConflictPkg
-			cmdArgs.Options["ask"].Set(fmt.Sprint(uask))
-		} else {
-			for _, split := range base {
-				if _, ok := conflicts[split.Name]; ok {
-					settings.NoConfirm = false
-
-					break
-				}
-			}
-		}
-
-		var errAdd error
-
-		for _, split := range base {
-			for suffix, optional := range map[string]bool{"": false, "-debug": true} {
-				deps, exp, pkgArchives, errAdd = doAddTarget(dp, localNamesCache, remoteNamesCache,
-					cmdArgs, pkgdests, deps, exp, split.Name+suffix, optional, pkgArchives)
-				if errAdd != nil {
-					return errAdd
-				}
-			}
-		}
-		text.Debugln("deps:", deps, "exp:", exp, "pkgArchives:", pkgArchives)
-
-		var wg sync.WaitGroup
-
-		for _, pkg := range base {
-			if srcInfo == nil {
-				text.Errorln(gotext.Get("could not find srcinfo for: %s", pkg.Name))
-				break
-			}
-
-			wg.Add(1)
-
-			text.Debugln("checking vcs store for:", pkg.Name)
-			go func(name string) {
-				cfg.Runtime.VCSStore.Update(ctx, name, srcInfo.Source)
-				wg.Done()
-			}(pkg.Name)
-		}
-
-		wg.Wait()
-	}
-
-	text.Debugln("installing archives:", pkgArchives)
-	errArchive := installPkgArchive(ctx, cfg.Runtime.CmdBuilder, cfg.Mode, cfg.Runtime.VCSStore,
-		cmdArgs, pkgArchives, settings.NoConfirm)
-	if errArchive != nil {
-		go cfg.Runtime.VCSStore.RemovePackages([]string{do.Aur[len(do.Aur)-1].String()})
-	}
-
-	errReason := setInstallReason(ctx, cfg.Runtime.CmdBuilder, cfg.Mode, cmdArgs, deps, exp)
-	if errReason != nil {
-		go cfg.Runtime.VCSStore.RemovePackages([]string{do.Aur[len(do.Aur)-1].String()})
-	}
-
-	settings.NoConfirm = oldConfirm
-
-	return nil
-}
-
 func installPkgArchive(ctx context.Context,
 func installPkgArchive(ctx context.Context,
 	cmdBuilder exe.ICmdBuilder,
 	cmdBuilder exe.ICmdBuilder,
 	mode parser.TargetMode,
 	mode parser.TargetMode,
@@ -872,40 +228,3 @@ func setInstallReason(ctx context.Context,
 
 
 	return asexp(ctx, cmdBuilder, mode, cmdArgs, exps)
 	return asexp(ctx, cmdBuilder, mode, cmdArgs, exps)
 }
 }
-
-func doAddTarget(dp *dep.Pool, localNamesCache, remoteNamesCache stringset.StringSet,
-	cmdArgs *parser.Arguments, pkgdests map[string]string,
-	deps, exp []string, name string, optional bool, pkgArchives []string,
-) (newDeps, newExp, newPkgArchives []string, err error) {
-	pkgdest, ok := pkgdests[name]
-	if !ok {
-		if optional {
-			return deps, exp, pkgArchives, nil
-		}
-
-		return deps, exp, pkgArchives, &PkgDestNotInListError{name}
-	}
-
-	if _, errStat := os.Stat(pkgdest); os.IsNotExist(errStat) {
-		if optional {
-			return deps, exp, pkgArchives, nil
-		}
-
-		return deps, exp, pkgArchives, &FindPkgDestError{pkgDest: pkgdest, name: name}
-	}
-
-	pkgArchives = append(pkgArchives, pkgdest)
-
-	switch {
-	case cmdArgs.ExistsArg("asdeps", "asdep"):
-		deps = append(deps, name)
-	case cmdArgs.ExistsArg("asexplicit", "asexp"):
-		exp = append(exp, name)
-	case !dp.Explicit.Get(name) && !localNamesCache.Get(name) && !remoteNamesCache.Get(name):
-		deps = append(deps, name)
-	default:
-		exp = append(exp, name)
-	}
-
-	return deps, exp, pkgArchives, nil
-}

+ 1 - 1
local_install.go

@@ -61,7 +61,7 @@ func installLocalPKGBUILD(
 	cmdArgs *parser.Arguments,
 	cmdArgs *parser.Arguments,
 	dbExecutor db.Executor,
 	dbExecutor db.Executor,
 ) error {
 ) error {
-	aurCache := config.Runtime.AURCache
+	aurCache := config.Runtime.AURClient
 	noCheck := strings.Contains(config.MFlags, "--nocheck")
 	noCheck := strings.Contains(config.MFlags, "--nocheck")
 
 
 	if len(cmdArgs.Targets) < 1 {
 	if len(cmdArgs.Targets) < 1 {

+ 5 - 5
local_install_test.go

@@ -144,7 +144,7 @@ func TestIntegrationLocalInstall(t *testing.T) {
 			Logger:     NewTestLogger(),
 			Logger:     NewTestLogger(),
 			CmdBuilder: cmdBuilder,
 			CmdBuilder: cmdBuilder,
 			VCSStore:   &vcs.Mock{},
 			VCSStore:   &vcs.Mock{},
-			AURCache: &mockaur.MockAUR{
+			AURClient: &mockaur.MockAUR{
 				GetFn: func(ctx context.Context, query *aur.Query) ([]aur.Pkg, error) {
 				GetFn: func(ctx context.Context, query *aur.Query) ([]aur.Pkg, error) {
 					return []aur.Pkg{}, nil
 					return []aur.Pkg{}, nil
 				},
 				},
@@ -263,7 +263,7 @@ func TestIntegrationLocalInstallMissingDep(t *testing.T) {
 			Logger:     NewTestLogger(),
 			Logger:     NewTestLogger(),
 			CmdBuilder: cmdBuilder,
 			CmdBuilder: cmdBuilder,
 			VCSStore:   &vcs.Mock{},
 			VCSStore:   &vcs.Mock{},
-			AURCache: &mockaur.MockAUR{
+			AURClient: &mockaur.MockAUR{
 				GetFn: func(ctx context.Context, query *aur.Query) ([]aur.Pkg, error) {
 				GetFn: func(ctx context.Context, query *aur.Query) ([]aur.Pkg, error) {
 					return []aur.Pkg{}, nil
 					return []aur.Pkg{}, nil
 				},
 				},
@@ -421,7 +421,7 @@ func TestIntegrationLocalInstallNeeded(t *testing.T) {
 			Logger:     NewTestLogger(),
 			Logger:     NewTestLogger(),
 			CmdBuilder: cmdBuilder,
 			CmdBuilder: cmdBuilder,
 			VCSStore:   &vcs.Mock{},
 			VCSStore:   &vcs.Mock{},
-			AURCache: &mockaur.MockAUR{
+			AURClient: &mockaur.MockAUR{
 				GetFn: func(ctx context.Context, query *aur.Query) ([]aur.Pkg, error) {
 				GetFn: func(ctx context.Context, query *aur.Query) ([]aur.Pkg, error) {
 					return []aur.Pkg{}, nil
 					return []aur.Pkg{}, nil
 				},
 				},
@@ -582,7 +582,7 @@ func TestIntegrationLocalInstallGenerateSRCINFO(t *testing.T) {
 			Logger:     NewTestLogger(),
 			Logger:     NewTestLogger(),
 			CmdBuilder: cmdBuilder,
 			CmdBuilder: cmdBuilder,
 			VCSStore:   &vcs.Mock{},
 			VCSStore:   &vcs.Mock{},
-			AURCache: &mockaur.MockAUR{
+			AURClient: &mockaur.MockAUR{
 				GetFn: func(ctx context.Context, query *aur.Query) ([]aur.Pkg, error) {
 				GetFn: func(ctx context.Context, query *aur.Query) ([]aur.Pkg, error) {
 					return []aur.Pkg{}, nil
 					return []aur.Pkg{}, nil
 				},
 				},
@@ -718,7 +718,7 @@ func TestIntegrationLocalInstallMissingFiles(t *testing.T) {
 			Logger:     NewTestLogger(),
 			Logger:     NewTestLogger(),
 			CmdBuilder: cmdBuilder,
 			CmdBuilder: cmdBuilder,
 			VCSStore:   &vcs.Mock{},
 			VCSStore:   &vcs.Mock{},
-			AURCache: &mockaur.MockAUR{
+			AURClient: &mockaur.MockAUR{
 				GetFn: func(ctx context.Context, query *aur.Query) ([]aur.Pkg, error) {
 				GetFn: func(ctx context.Context, query *aur.Query) ([]aur.Pkg, error) {
 					return []aur.Pkg{}, nil
 					return []aur.Pkg{}, nil
 				},
 				},

+ 1 - 1
main.go

@@ -116,7 +116,7 @@ func main() {
 	cfg.Runtime = runtime
 	cfg.Runtime = runtime
 
 
 	cfg.Runtime.QueryBuilder = query.NewSourceQueryBuilder(
 	cfg.Runtime.QueryBuilder = query.NewSourceQueryBuilder(
-		cfg.Runtime.AURCache,
+		cfg.Runtime.AURClient,
 		cfg.Runtime.Logger.Child("mixed.querybuilder"), cfg.SortBy,
 		cfg.Runtime.Logger.Child("mixed.querybuilder"), cfg.SortBy,
 		cfg.Mode, cfg.SearchBy,
 		cfg.Mode, cfg.SearchBy,
 		cfg.BottomUp, cfg.SingleLineResults, cfg.SeparateSources)
 		cfg.BottomUp, cfg.SingleLineResults, cfg.SeparateSources)

+ 0 - 1
pkg/db/executor.go

@@ -47,7 +47,6 @@ type Executor interface {
 	LocalPackage(string) IPackage
 	LocalPackage(string) IPackage
 	LocalPackages() []IPackage
 	LocalPackages() []IPackage
 	LocalSatisfierExists(string) bool
 	LocalSatisfierExists(string) bool
-	PackageConflicts(IPackage) []Depend
 	PackageDepends(IPackage) []Depend
 	PackageDepends(IPackage) []Depend
 	PackageGroups(IPackage) []string
 	PackageGroups(IPackage) []string
 	PackageOptionalDepends(IPackage) []Depend
 	PackageOptionalDepends(IPackage) []Depend

+ 0 - 5
pkg/db/ialpm/alpm.go

@@ -398,11 +398,6 @@ func (ae *AlpmExecutor) PackageProvides(pkg alpm.IPackage) []alpm.Depend {
 	return alpmPackage.Provides().Slice()
 	return alpmPackage.Provides().Slice()
 }
 }
 
 
-func (ae *AlpmExecutor) PackageConflicts(pkg alpm.IPackage) []alpm.Depend {
-	alpmPackage := pkg.(*alpm.Package)
-	return alpmPackage.Conflicts().Slice()
-}
-
 func (ae *AlpmExecutor) PackageGroups(pkg alpm.IPackage) []string {
 func (ae *AlpmExecutor) PackageGroups(pkg alpm.IPackage) []string {
 	alpmPackage := pkg.(*alpm.Package)
 	alpmPackage := pkg.(*alpm.Package)
 	return alpmPackage.Groups().Slice()
 	return alpmPackage.Groups().Slice()

+ 0 - 69
pkg/dep/base.go

@@ -1,69 +0,0 @@
-package dep
-
-import (
-	aur "github.com/Jguer/yay/v12/pkg/query"
-	"github.com/Jguer/yay/v12/pkg/stringset"
-)
-
-// Base is an AUR base package.
-type Base []*aur.Pkg
-
-// Pkgbase returns the first base package.
-func (b Base) Pkgbase() string {
-	return b[0].PackageBase
-}
-
-// Version returns the first base package version.
-func (b Base) Version() string {
-	return b[0].Version
-}
-
-// URLPath returns the first base package URL.
-func (b Base) URLPath() string {
-	return b[0].URLPath
-}
-
-func (b Base) AnyIsInSet(set stringset.StringSet) bool {
-	for _, pkg := range b {
-		if set.Get(pkg.Name) {
-			return true
-		}
-	}
-
-	return false
-}
-
-// Packages foo and bar from a pkgbase named base would print like so:
-// base (foo bar).
-func (b Base) String() string {
-	pkg := b[0]
-	str := pkg.PackageBase
-
-	if len(b) > 1 || pkg.PackageBase != pkg.Name {
-		str2 := " ("
-		for _, split := range b {
-			str2 += split.Name + " "
-		}
-
-		str2 = str2[:len(str2)-1] + ")"
-
-		str += str2
-	}
-
-	return str
-}
-
-func GetBases(pkgs []aur.Pkg) []Base {
-	basesMap := make(map[string]Base)
-	for i := range pkgs {
-		pkg := &pkgs[i]
-		basesMap[pkg.PackageBase] = append(basesMap[pkg.PackageBase], pkg)
-	}
-
-	bases := make([]Base, 0, len(basesMap))
-	for _, base := range basesMap {
-		bases = append(bases, base)
-	}
-
-	return bases
-}

+ 0 - 47
pkg/dep/dep.go

@@ -5,41 +5,8 @@ import (
 
 
 	"github.com/Jguer/yay/v12/pkg/db"
 	"github.com/Jguer/yay/v12/pkg/db"
 	aur "github.com/Jguer/yay/v12/pkg/query"
 	aur "github.com/Jguer/yay/v12/pkg/query"
-	"github.com/Jguer/yay/v12/pkg/text"
 )
 )
 
 
-type providers struct {
-	lookfor string
-	Pkgs    []*aur.Pkg
-}
-
-func makeProviders(name string) providers {
-	return providers{
-		name,
-		make([]*aur.Pkg, 0),
-	}
-}
-
-func (q providers) Len() int {
-	return len(q.Pkgs)
-}
-
-func (q providers) Less(i, j int) bool {
-	if q.lookfor == q.Pkgs[i].Name {
-		return true
-	}
-
-	if q.lookfor == q.Pkgs[j].Name {
-		return false
-	}
-
-	return text.LessRunes([]rune(q.Pkgs[i].Name), []rune(q.Pkgs[j].Name))
-}
-
-func (q providers) Swap(i, j int) {
-	q.Pkgs[i], q.Pkgs[j] = q.Pkgs[j], q.Pkgs[i]
-}
-
 func splitDep(dep string) (pkg, mod, ver string) {
 func splitDep(dep string) (pkg, mod, ver string) {
 	split := strings.FieldsFunc(dep, func(c rune) bool {
 	split := strings.FieldsFunc(dep, func(c rune) bool {
 		match := c == '>' || c == '<' || c == '='
 		match := c == '>' || c == '<' || c == '='
@@ -118,17 +85,3 @@ func satisfiesAur(dep string, pkg *aur.Pkg) bool {
 
 
 	return false
 	return false
 }
 }
-
-func satisfiesRepo(dep string, pkg db.IPackage, dbExecutor db.Executor) bool {
-	if pkgSatisfies(pkg.Name(), pkg.Version(), dep) {
-		return true
-	}
-
-	for _, provided := range dbExecutor.PackageProvides(pkg) {
-		if provideSatisfies(provided.String(), dep, pkg.Version()) {
-			return true
-		}
-	}
-
-	return false
-}

+ 0 - 324
pkg/dep/depCheck.go

@@ -1,324 +0,0 @@
-package dep
-
-import (
-	"errors"
-	"fmt"
-	"os"
-	"strings"
-	"sync"
-
-	"github.com/leonelquinteros/gotext"
-
-	"github.com/Jguer/yay/v12/pkg/stringset"
-	"github.com/Jguer/yay/v12/pkg/text"
-)
-
-func (dp *Pool) checkInnerConflict(name, conflict string, conflicts stringset.MapStringSet) {
-	for _, pkg := range dp.Aur {
-		if pkg.Name == name {
-			continue
-		}
-
-		if satisfiesAur(conflict, pkg) {
-			conflicts.Add(name, pkg.Name)
-		}
-	}
-
-	for _, pkg := range dp.Repo {
-		if pkg.Name() == name {
-			continue
-		}
-
-		if satisfiesRepo(conflict, pkg, dp.AlpmExecutor) {
-			conflicts.Add(name, pkg.Name())
-		}
-	}
-}
-
-func (dp *Pool) checkForwardConflict(name, conflict string, conflicts stringset.MapStringSet) {
-	for _, pkg := range dp.AlpmExecutor.LocalPackages() {
-		if pkg.Name() == name || dp.hasPackage(pkg.Name()) {
-			continue
-		}
-
-		if satisfiesRepo(conflict, pkg, dp.AlpmExecutor) {
-			n := pkg.Name()
-			if n != conflict {
-				n += " (" + conflict + ")"
-			}
-
-			conflicts.Add(name, n)
-		}
-	}
-}
-
-func (dp *Pool) checkReverseConflict(name, conflict string, conflicts stringset.MapStringSet) {
-	for _, pkg := range dp.Aur {
-		if pkg.Name == name {
-			continue
-		}
-
-		if satisfiesAur(conflict, pkg) {
-			if name != conflict {
-				name += " (" + conflict + ")"
-			}
-
-			conflicts.Add(pkg.Name, name)
-		}
-	}
-
-	for _, pkg := range dp.Repo {
-		if pkg.Name() == name {
-			continue
-		}
-
-		if satisfiesRepo(conflict, pkg, dp.AlpmExecutor) {
-			if name != conflict {
-				name += " (" + conflict + ")"
-			}
-
-			conflicts.Add(pkg.Name(), name)
-		}
-	}
-}
-
-func (dp *Pool) checkInnerConflicts(conflicts stringset.MapStringSet) {
-	for _, pkg := range dp.Aur {
-		for _, conflict := range pkg.Conflicts {
-			dp.checkInnerConflict(pkg.Name, conflict, conflicts)
-		}
-	}
-
-	for _, pkg := range dp.Repo {
-		for _, conflict := range dp.AlpmExecutor.PackageConflicts(pkg) {
-			dp.checkInnerConflict(pkg.Name(), conflict.String(), conflicts)
-		}
-	}
-}
-
-func (dp *Pool) checkForwardConflicts(conflicts stringset.MapStringSet) {
-	for _, pkg := range dp.Aur {
-		for _, conflict := range pkg.Conflicts {
-			dp.checkForwardConflict(pkg.Name, conflict, conflicts)
-		}
-	}
-
-	for _, pkg := range dp.Repo {
-		for _, conflict := range dp.AlpmExecutor.PackageConflicts(pkg) {
-			dp.checkForwardConflict(pkg.Name(), conflict.String(), conflicts)
-		}
-	}
-}
-
-func (dp *Pool) checkReverseConflicts(conflicts stringset.MapStringSet) {
-	for _, pkg := range dp.AlpmExecutor.LocalPackages() {
-		if dp.hasPackage(pkg.Name()) {
-			continue
-		}
-
-		for _, conflict := range dp.AlpmExecutor.PackageConflicts(pkg) {
-			dp.checkReverseConflict(pkg.Name(), conflict.String(), conflicts)
-		}
-	}
-}
-
-func (dp *Pool) CheckConflicts(useAsk, noConfirm, noDeps bool) (stringset.MapStringSet, error) {
-	conflicts := make(stringset.MapStringSet)
-	if noDeps {
-		return conflicts, nil
-	}
-
-	var wg sync.WaitGroup
-
-	innerConflicts := make(stringset.MapStringSet)
-
-	wg.Add(2)
-
-	text.OperationInfoln(gotext.Get("Checking for conflicts..."))
-
-	go func() {
-		dp.checkForwardConflicts(conflicts)
-		dp.checkReverseConflicts(conflicts)
-		wg.Done()
-	}()
-
-	text.OperationInfoln(gotext.Get("Checking for inner conflicts..."))
-
-	go func() {
-		dp.checkInnerConflicts(innerConflicts)
-		wg.Done()
-	}()
-
-	wg.Wait()
-
-	if len(innerConflicts) != 0 {
-		text.Errorln(gotext.Get("Inner conflicts found:"))
-
-		for name, pkgs := range innerConflicts {
-			str := text.SprintError(name + ":")
-			for pkg := range pkgs {
-				str += " " + text.Cyan(pkg) + ","
-			}
-
-			str = strings.TrimSuffix(str, ",")
-
-			fmt.Println(str)
-		}
-	}
-
-	if len(conflicts) != 0 {
-		text.Errorln(gotext.Get("Package conflicts found:"))
-
-		for name, pkgs := range conflicts {
-			str := text.SprintError(gotext.Get("Installing %s will remove:", text.Cyan(name)))
-			for pkg := range pkgs {
-				str += " " + text.Cyan(pkg) + ","
-			}
-
-			str = strings.TrimSuffix(str, ",")
-
-			fmt.Println(str)
-		}
-	}
-
-	// Add the inner conflicts to the conflicts
-	// 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(stringset.StringSet)
-		for pkg := range pkgs {
-			conflicts[pkg] = make(stringset.StringSet)
-		}
-	}
-
-	if len(conflicts) > 0 {
-		if !useAsk {
-			if noConfirm {
-				return nil, errors.New(gotext.Get("package conflicts can not be resolved with noconfirm, aborting"))
-			}
-
-			text.Errorln(gotext.Get("Conflicting packages will have to be confirmed manually"))
-		}
-	}
-
-	return conflicts, nil
-}
-
-type missing struct {
-	Good    stringset.StringSet
-	Missing map[string][][]string
-}
-
-func (dp *Pool) _checkMissing(dep string, stack []string, missing *missing, noDeps, noCheckDeps bool) {
-	if missing.Good.Get(dep) {
-		return
-	}
-
-	if trees, ok := missing.Missing[dep]; ok {
-		for _, tree := range trees {
-			if stringSliceEqual(tree, stack) {
-				return
-			}
-		}
-
-		missing.Missing[dep] = append(missing.Missing[dep], stack)
-
-		return
-	}
-
-	if aurPkg := dp.findSatisfierAur(dep); aurPkg != nil {
-		missing.Good.Set(dep)
-
-		combinedDepList := ComputeCombinedDepList(aurPkg, noDeps, noCheckDeps)
-		for _, aurDep := range combinedDepList {
-			if dp.AlpmExecutor.LocalSatisfierExists(aurDep) {
-				missing.Good.Set(aurDep)
-				continue
-			}
-
-			dp._checkMissing(aurDep, append(stack, aurPkg.Name), missing, noDeps, noCheckDeps)
-		}
-
-		return
-	}
-
-	if repoPkg := dp.findSatisfierRepo(dep); repoPkg != nil {
-		missing.Good.Set(dep)
-
-		if noDeps {
-			return
-		}
-
-		for _, dep := range dp.AlpmExecutor.PackageDepends(repoPkg) {
-			if dp.AlpmExecutor.LocalSatisfierExists(dep.String()) {
-				missing.Good.Set(dep.String())
-				continue
-			}
-
-			dp._checkMissing(dep.String(), append(stack, repoPkg.Name()), missing, noDeps, noCheckDeps)
-		}
-
-		return
-	}
-
-	missing.Missing[dep] = [][]string{stack}
-}
-
-func stringSliceEqual(a, b []string) bool {
-	if a == nil && b == nil {
-		return true
-	}
-
-	if a == nil || b == nil {
-		return false
-	}
-
-	if len(a) != len(b) {
-		return false
-	}
-
-	for i := 0; i < len(a); i++ {
-		if a[i] != b[i] {
-			return false
-		}
-	}
-
-	return true
-}
-
-func (dp *Pool) CheckMissing(noDeps, noCheckDeps bool) error {
-	missing := &missing{
-		make(stringset.StringSet),
-		make(map[string][][]string),
-	}
-
-	for _, target := range dp.Targets {
-		dp._checkMissing(target.DepString(), make([]string, 0), missing, noDeps, noCheckDeps)
-	}
-
-	if len(missing.Missing) == 0 {
-		return nil
-	}
-
-	text.Errorln(gotext.Get("could not find all required packages:"))
-
-	for dep, trees := range missing.Missing {
-		for _, tree := range trees {
-			fmt.Fprintf(os.Stderr, "\t%s", text.Cyan(dep))
-
-			if len(tree) == 0 {
-				fmt.Fprint(os.Stderr, gotext.Get(" (Target"))
-			} else {
-				fmt.Fprint(os.Stderr, gotext.Get(" (Wanted by: "))
-				for n := 0; n < len(tree)-1; n++ {
-					fmt.Fprint(os.Stderr, text.Cyan(tree[n]), " -> ")
-				}
-				fmt.Fprint(os.Stderr, text.Cyan(tree[len(tree)-1]))
-			}
-
-			fmt.Fprintln(os.Stderr, ")")
-		}
-	}
-
-	return fmt.Errorf("")
-}

+ 0 - 199
pkg/dep/depOrder.go

@@ -1,199 +0,0 @@
-package dep
-
-import (
-	"fmt"
-
-	"github.com/Jguer/yay/v12/pkg/db"
-	aur "github.com/Jguer/yay/v12/pkg/query"
-	"github.com/Jguer/yay/v12/pkg/stringset"
-	"github.com/Jguer/yay/v12/pkg/text"
-)
-
-type Order struct {
-	Aur     []Base
-	Repo    []db.IPackage
-	Runtime stringset.StringSet
-}
-
-func newOrder() *Order {
-	return &Order{
-		make([]Base, 0),
-		make([]db.IPackage, 0),
-		make(stringset.StringSet),
-	}
-}
-
-func GetOrder(dp *Pool, noDeps, noCheckDeps bool) *Order {
-	do := newOrder()
-
-	for _, target := range dp.Targets {
-		dep := target.DepString()
-
-		if aurPkg := dp.Aur[dep]; aurPkg != nil && pkgSatisfies(aurPkg.Name, aurPkg.Version, dep) {
-			do.orderPkgAur(aurPkg, dp, true, noDeps, noCheckDeps)
-		} else if aurPkg := dp.findSatisfierAur(dep); aurPkg != nil {
-			do.orderPkgAur(aurPkg, dp, true, noDeps, noCheckDeps)
-		} else if repoPkg := dp.findSatisfierRepo(dep); repoPkg != nil {
-			do.orderPkgRepo(repoPkg, dp, true)
-		}
-	}
-
-	return do
-}
-
-func (do *Order) orderPkgAur(pkg *aur.Pkg, dp *Pool, runtime, noDeps, noCheckDeps bool) {
-	if runtime {
-		do.Runtime.Set(pkg.Name)
-	}
-
-	delete(dp.Aur, pkg.Name)
-
-	for i, dep := range ComputeCombinedDepList(pkg, noDeps, noCheckDeps) {
-		if aurPkg := dp.findSatisfierAur(dep); aurPkg != nil {
-			do.orderPkgAur(aurPkg, dp, runtime && i == 0, noDeps, noCheckDeps)
-		}
-
-		if repoPkg := dp.findSatisfierRepo(dep); repoPkg != nil {
-			do.orderPkgRepo(repoPkg, dp, runtime && i == 0)
-		}
-	}
-
-	for i, base := range do.Aur {
-		if base.Pkgbase() == pkg.PackageBase {
-			do.Aur[i] = append(base, pkg)
-			return
-		}
-	}
-
-	do.Aur = append(do.Aur, Base{pkg})
-}
-
-func (do *Order) orderPkgRepo(pkg db.IPackage, dp *Pool, runtime bool) {
-	if runtime {
-		do.Runtime.Set(pkg.Name())
-	}
-
-	delete(dp.Repo, pkg.Name())
-
-	for _, dep := range dp.AlpmExecutor.PackageDepends(pkg) {
-		if repoPkg := dp.findSatisfierRepo(dep.String()); repoPkg != nil {
-			do.orderPkgRepo(repoPkg, dp, runtime)
-		}
-	}
-
-	do.Repo = append(do.Repo, pkg)
-}
-
-func (do *Order) HasMake() bool {
-	lenAur := 0
-	for _, base := range do.Aur {
-		lenAur += len(base)
-	}
-
-	return len(do.Runtime) != lenAur+len(do.Repo)
-}
-
-func (do *Order) GetMake() []string {
-	makeOnly := []string{}
-
-	for _, base := range do.Aur {
-		for _, pkg := range base {
-			if !do.Runtime.Get(pkg.Name) {
-				makeOnly = append(makeOnly, pkg.Name)
-			}
-		}
-	}
-
-	for _, pkg := range do.Repo {
-		if !do.Runtime.Get(pkg.Name()) {
-			makeOnly = append(makeOnly, pkg.Name())
-		}
-	}
-
-	return makeOnly
-}
-
-// Print prints repository packages to be downloaded.
-func (do *Order) Print() {
-	repo := ""
-	repoMake := ""
-	aurString := ""
-	aurMake := ""
-
-	repoLen := 0
-	repoMakeLen := 0
-	aurLen := 0
-	aurMakeLen := 0
-
-	for _, pkg := range do.Repo {
-		pkgStr := fmt.Sprintf("  %s-%s", pkg.Name(), pkg.Version())
-		if do.Runtime.Get(pkg.Name()) {
-			repo += pkgStr
-			repoLen++
-		} else {
-			repoMake += pkgStr
-			repoMakeLen++
-		}
-	}
-
-	for _, base := range do.Aur {
-		pkg := base.Pkgbase()
-		pkgStr := "  " + pkg + "-" + base[0].Version
-		pkgStrMake := pkgStr
-
-		push := false
-		pushMake := false
-
-		switch {
-		case len(base) > 1, pkg != base[0].Name:
-			pkgStr += " ("
-			pkgStrMake += " ("
-
-			for _, split := range base {
-				if do.Runtime.Get(split.Name) {
-					pkgStr += split.Name + " "
-					aurLen++
-
-					push = true
-				} else {
-					pkgStrMake += split.Name + " "
-					aurMakeLen++
-					pushMake = true
-				}
-			}
-
-			pkgStr = pkgStr[:len(pkgStr)-1] + ")"
-			pkgStrMake = pkgStrMake[:len(pkgStrMake)-1] + ")"
-		case do.Runtime.Get(base[0].Name):
-			aurLen++
-
-			push = true
-		default:
-			aurMakeLen++
-
-			pushMake = true
-		}
-
-		if push {
-			aurString += pkgStr
-		}
-
-		if pushMake {
-			aurMake += pkgStrMake
-		}
-	}
-
-	printDownloads("Repo", repoLen, repo)
-	printDownloads("Repo Make", repoMakeLen, repoMake)
-	printDownloads("Aur", aurLen, aurString)
-	printDownloads("Aur Make", aurMakeLen, aurMake)
-}
-
-func printDownloads(repoName string, length int, packages string) {
-	if length < 1 {
-		return
-	}
-
-	repoInfo := fmt.Sprintf(text.Bold(text.Blue("[%s:%d]")), repoName, length)
-	fmt.Println(repoInfo + text.Cyan(packages))
-}

+ 0 - 546
pkg/dep/depPool.go

@@ -1,546 +0,0 @@
-package dep
-
-import (
-	"context"
-	"fmt"
-	"os"
-	"sort"
-	"strconv"
-	"sync"
-
-	"github.com/Jguer/aur"
-	"github.com/Jguer/aur/rpc"
-	alpm "github.com/Jguer/go-alpm/v2"
-	"github.com/leonelquinteros/gotext"
-
-	"github.com/Jguer/yay/v12/pkg/db"
-	"github.com/Jguer/yay/v12/pkg/query"
-	"github.com/Jguer/yay/v12/pkg/settings"
-	"github.com/Jguer/yay/v12/pkg/settings/parser"
-	"github.com/Jguer/yay/v12/pkg/stringset"
-	"github.com/Jguer/yay/v12/pkg/text"
-)
-
-type Pool struct {
-	Targets      []Target
-	Explicit     stringset.StringSet
-	Repo         map[string]db.IPackage
-	Aur          map[string]*query.Pkg
-	AurCache     map[string]*query.Pkg
-	Groups       []string
-	AlpmExecutor db.Executor
-	Warnings     *query.AURWarnings
-	aurClient    rpc.ClientInterface
-}
-
-func newPool(dbExecutor db.Executor, aurClient rpc.ClientInterface) *Pool {
-	dp := &Pool{
-		Targets:      []Target{},
-		Explicit:     map[string]struct{}{},
-		Repo:         map[string]alpm.IPackage{},
-		Aur:          map[string]*aur.Pkg{},
-		AurCache:     map[string]*aur.Pkg{},
-		Groups:       []string{},
-		AlpmExecutor: dbExecutor,
-		Warnings:     nil,
-		aurClient:    aurClient,
-	}
-
-	return dp
-}
-
-// Includes db/ prefixes and group installs.
-func (dp *Pool) ResolveTargets(ctx context.Context, pkgs []string,
-	mode parser.TargetMode,
-	ignoreProviders, noConfirm, provides bool, rebuild string, splitN int, noDeps, noCheckDeps bool, assumeInstalled []string,
-) error {
-	// RPC requests are slow
-	// Combine as many AUR package requests as possible into a single RPC call
-	aurTargets := make(stringset.StringSet)
-
-	pkgs = query.RemoveInvalidTargets(pkgs, mode)
-
-	for _, pkg := range pkgs {
-		target := ToTarget(pkg)
-
-		// skip targets already satisfied
-		// even if the user enters db/pkg and aur/pkg the latter will
-		// still get skipped even if it's from a different database to
-		// the one specified
-		// this is how pacman behaves
-		if dp.hasPackage(target.DepString()) || isInAssumeInstalled(target.DepString(), assumeInstalled) {
-			continue
-		}
-
-		var foundPkg db.IPackage
-
-		// aur/ prefix means we only check the aur
-		if target.DB == "aur" || mode == parser.ModeAUR {
-			dp.Targets = append(dp.Targets, target)
-			aurTargets.Set(target.DepString())
-
-			continue
-		}
-
-		// If there's a different prefix only look in that repo
-		if target.DB != "" {
-			foundPkg = dp.AlpmExecutor.SatisfierFromDB(target.DepString(), target.DB)
-		} else {
-			// otherwise find it in any repo
-			foundPkg = dp.AlpmExecutor.SyncSatisfier(target.DepString())
-		}
-
-		if foundPkg != nil {
-			dp.Targets = append(dp.Targets, target)
-			dp.Explicit.Set(foundPkg.Name())
-			dp.ResolveRepoDependency(foundPkg, noDeps)
-
-			continue
-		} else {
-			// check for groups
-			// currently we don't resolve the packages in a group
-			// only check if the group exists
-			// would be better to check the groups from singleDB if
-			// the user specified a db but there's no easy way to do
-			// it without making alpm_lists so don't bother for now
-			// db/group is probably a rare use case
-			groupPackages := dp.AlpmExecutor.PackagesFromGroup(target.Name)
-			if len(groupPackages) > 0 {
-				dp.Groups = append(dp.Groups, target.String())
-				for _, pkg := range groupPackages {
-					dp.Explicit.Set(pkg.Name())
-				}
-				continue
-			}
-		}
-
-		// if there was no db prefix check the aur
-		if target.DB == "" {
-			aurTargets.Set(target.DepString())
-		}
-
-		dp.Targets = append(dp.Targets, target)
-	}
-
-	if len(aurTargets) > 0 && mode.AtLeastAUR() {
-		return dp.resolveAURPackages(ctx, aurTargets, true, ignoreProviders,
-			noConfirm, provides, rebuild, splitN, noDeps, noCheckDeps)
-	}
-
-	return nil
-}
-
-// Pseudo provides finder.
-// Try to find provides by performing a search of the package name
-// This effectively performs -Ss on each package
-// then runs -Si on each result to cache the information.
-//
-// For example if you were to -S yay then yay -Ss would give:
-// yay-git yay-bin yay realyog pacui pacui-git ruby-yard
-// These packages will all be added to the cache in case they are needed later
-// Ofcouse only the first three packages provide yay, the rest are just false
-// positives.
-//
-// This method increases dependency resolve time.
-func (dp *Pool) findProvides(ctx context.Context, pkgs stringset.StringSet) error {
-	var (
-		mux sync.Mutex
-		wg  sync.WaitGroup
-	)
-
-	doSearch := func(pkg string) {
-		defer wg.Done()
-
-		var (
-			err     error
-			results []query.Pkg
-		)
-
-		results, err = dp.aurClient.Search(ctx, pkg, aur.Provides)
-		if err != nil {
-			return
-		}
-
-		for iR := range results {
-			mux.Lock()
-			if _, ok := dp.AurCache[results[iR].Name]; !ok {
-				pkgs.Set(results[iR].Name)
-			}
-			mux.Unlock()
-		}
-	}
-
-	for pkg := range pkgs {
-		if dp.AlpmExecutor.LocalPackage(pkg) != nil {
-			continue
-		}
-
-		wg.Add(1)
-
-		text.Debugln("AUR RPC Search:", pkg)
-
-		go doSearch(pkg)
-	}
-
-	wg.Wait()
-
-	return nil
-}
-
-func (dp *Pool) cacheAURPackages(ctx context.Context, _pkgs stringset.StringSet, provides bool, splitN int) error {
-	pkgs := _pkgs.Copy()
-	toQuery := make([]string, 0)
-
-	for pkg := range pkgs {
-		if _, ok := dp.AurCache[pkg]; ok {
-			pkgs.Remove(pkg)
-		}
-	}
-
-	if len(pkgs) == 0 {
-		return nil
-	}
-
-	if provides {
-		err := dp.findProvides(ctx, pkgs)
-		if err != nil {
-			return err
-		}
-	}
-
-	for pkg := range pkgs {
-		if _, ok := dp.AurCache[pkg]; !ok {
-			name, _, ver := splitDep(pkg)
-			if ver != "" {
-				toQuery = append(toQuery, name, name+"-"+ver)
-			} else {
-				toQuery = append(toQuery, name)
-			}
-		}
-	}
-
-	info, err := query.AURInfo(ctx, dp.aurClient, toQuery, dp.Warnings, splitN)
-	if err != nil {
-		return err
-	}
-
-	for i := range info {
-		// Dump everything in cache just in case we need it later
-		pkg := &info[i]
-		dp.AurCache[pkg.Name] = pkg
-	}
-
-	return nil
-}
-
-// Compute dependency lists used in Package dep searching and ordering.
-// Order sensitive TOFIX.
-func ComputeCombinedDepList(pkg *aur.Pkg, noDeps, noCheckDeps bool) []string {
-	combinedDepList := make([]string, 0, len(pkg.Depends)+len(pkg.MakeDepends)+len(pkg.CheckDepends))
-
-	if !noDeps {
-		combinedDepList = append(combinedDepList, pkg.Depends...)
-	}
-
-	combinedDepList = append(combinedDepList, pkg.MakeDepends...)
-
-	if !noCheckDeps {
-		combinedDepList = append(combinedDepList, pkg.CheckDepends...)
-	}
-
-	return combinedDepList
-}
-
-func (dp *Pool) resolveAURPackages(ctx context.Context,
-	pkgs stringset.StringSet,
-	explicit, ignoreProviders, noConfirm, provides bool,
-	rebuild string, splitN int, noDeps, noCheckDeps bool,
-) error {
-	newPackages := make(stringset.StringSet)
-	newAURPackages := make(stringset.StringSet)
-
-	err := dp.cacheAURPackages(ctx, pkgs, provides, splitN)
-	if err != nil {
-		return err
-	}
-
-	if len(pkgs) == 0 {
-		return nil
-	}
-
-	for name := range pkgs {
-		_, ok := dp.Aur[name]
-		if ok {
-			continue
-		}
-
-		pkg := dp.findSatisfierAurCache(name, ignoreProviders, noConfirm, provides)
-		if pkg == nil {
-			continue
-		}
-
-		if explicit {
-			dp.Explicit.Set(pkg.Name)
-		}
-
-		dp.Aur[pkg.Name] = pkg
-
-		combinedDepList := ComputeCombinedDepList(pkg, noDeps, noCheckDeps)
-		for _, dep := range combinedDepList {
-			newPackages.Set(dep)
-		}
-	}
-
-	for dep := range newPackages {
-		if dp.hasSatisfier(dep) {
-			continue
-		}
-
-		isInstalled := dp.AlpmExecutor.LocalSatisfierExists(dep)
-		hm := settings.HideMenus
-		settings.HideMenus = isInstalled
-		repoPkg := dp.AlpmExecutor.SyncSatisfier(dep) // has satisfier in repo: fetch it
-		settings.HideMenus = hm
-
-		if isInstalled && (rebuild != "tree" || repoPkg != nil) {
-			continue
-		}
-
-		if repoPkg != nil {
-			dp.ResolveRepoDependency(repoPkg, false)
-			continue
-		}
-
-		// assume it's in the aur
-		// ditch the versioning because the RPC can't handle it
-		newAURPackages.Set(dep)
-	}
-
-	err = dp.resolveAURPackages(ctx, newAURPackages, false, ignoreProviders,
-		noConfirm, provides, rebuild, splitN, noDeps, noCheckDeps)
-
-	return err
-}
-
-func (dp *Pool) ResolveRepoDependency(pkg db.IPackage, noDeps bool) {
-	dp.Repo[pkg.Name()] = pkg
-
-	if noDeps {
-		return
-	}
-
-	for _, dep := range dp.AlpmExecutor.PackageDepends(pkg) {
-		if dp.hasSatisfier(dep.String()) {
-			continue
-		}
-
-		// has satisfier installed: skip
-		if dp.AlpmExecutor.LocalSatisfierExists(dep.String()) {
-			continue
-		}
-
-		// has satisfier in repo: fetch it
-		if repoPkg := dp.AlpmExecutor.SyncSatisfier(dep.String()); repoPkg != nil {
-			dp.ResolveRepoDependency(repoPkg, noDeps)
-		}
-	}
-}
-
-func GetPool(ctx context.Context, pkgs []string,
-	warnings *query.AURWarnings,
-	dbExecutor db.Executor,
-	aurClient rpc.ClientInterface,
-	mode parser.TargetMode,
-	ignoreProviders, noConfirm, provides bool,
-	rebuild string, splitN int, noDeps bool, noCheckDeps bool, assumeInstalled []string,
-) (*Pool, error) {
-	dp := newPool(dbExecutor, aurClient)
-
-	dp.Warnings = warnings
-	err := dp.ResolveTargets(ctx, pkgs, mode, ignoreProviders, noConfirm, provides,
-		rebuild, splitN, noDeps, noCheckDeps, assumeInstalled)
-
-	return dp, err
-}
-
-func (dp *Pool) findSatisfierAur(dep string) *query.Pkg {
-	for _, pkg := range dp.Aur {
-		if satisfiesAur(dep, pkg) {
-			return pkg
-		}
-	}
-
-	return nil
-}
-
-// This is mostly used to promote packages from the cache
-// to the Install list
-// Provide a pacman style provider menu if there's more than one candidate
-// This acts slightly differently from Pacman, It will give
-// a menu even if a package with a matching name exists. I believe this
-// method is better because most of the time you are choosing between
-// foo and foo-git.
-// Using Pacman's ways trying to install foo would never give you
-// a menu.
-// TODO: maybe intermix repo providers in the menu.
-func (dp *Pool) findSatisfierAurCache(dep string, ignoreProviders, noConfirm, provides bool) *query.Pkg {
-	depName, _, _ := splitDep(dep)
-	seen := make(stringset.StringSet)
-	providerSlice := makeProviders(depName)
-
-	if dp.AlpmExecutor.LocalPackage(depName) != nil {
-		if pkg, ok := dp.AurCache[dep]; ok && pkgSatisfies(pkg.Name, pkg.Version, dep) {
-			return pkg
-		}
-	}
-
-	if ignoreProviders {
-		for _, pkg := range dp.AurCache {
-			if pkgSatisfies(pkg.Name, pkg.Version, dep) {
-				for _, target := range dp.Targets {
-					if target.Name == pkg.Name {
-						return pkg
-					}
-				}
-			}
-		}
-	}
-
-	for _, pkg := range dp.AurCache {
-		if seen.Get(pkg.Name) {
-			continue
-		}
-
-		if pkgSatisfies(pkg.Name, pkg.Version, dep) {
-			providerSlice.Pkgs = append(providerSlice.Pkgs, pkg)
-			seen.Set(pkg.Name)
-
-			continue
-		}
-
-		for _, provide := range pkg.Provides {
-			if provideSatisfies(provide, dep, pkg.Version) {
-				providerSlice.Pkgs = append(providerSlice.Pkgs, pkg)
-				seen.Set(pkg.Name)
-
-				continue
-			}
-		}
-	}
-
-	if !provides && providerSlice.Len() >= 1 {
-		return providerSlice.Pkgs[0]
-	}
-
-	if providerSlice.Len() == 1 {
-		return providerSlice.Pkgs[0]
-	}
-
-	if providerSlice.Len() > 1 {
-		sort.Sort(providerSlice)
-		return providerMenu(dep, providerSlice, noConfirm)
-	}
-
-	return nil
-}
-
-func (dp *Pool) findSatisfierRepo(dep string) db.IPackage {
-	for _, pkg := range dp.Repo {
-		if satisfiesRepo(dep, pkg, dp.AlpmExecutor) {
-			return pkg
-		}
-	}
-
-	return nil
-}
-
-func (dp *Pool) hasSatisfier(dep string) bool {
-	return dp.findSatisfierRepo(dep) != nil || dp.findSatisfierAur(dep) != nil
-}
-
-func (dp *Pool) hasPackage(name string) bool {
-	for _, pkg := range dp.Repo {
-		if pkg.Name() == name {
-			return true
-		}
-	}
-
-	for _, pkg := range dp.Aur {
-		if pkg.Name == name {
-			return true
-		}
-	}
-
-	for _, pkg := range dp.Groups {
-		if pkg == name {
-			return true
-		}
-	}
-
-	return false
-}
-
-func isInAssumeInstalled(name string, assumeInstalled []string) bool {
-	for _, pkgAndVersion := range assumeInstalled {
-		assumeName, _, _ := splitDep(pkgAndVersion)
-
-		depName, _, _ := splitDep(name)
-		if assumeName == depName {
-			return true
-		}
-	}
-
-	return false
-}
-
-func providerMenu(dep string, providers providers, noConfirm bool) *query.Pkg {
-	size := providers.Len()
-
-	str := text.Bold(gotext.Get("There are %d providers available for %s:", size, dep))
-	str += "\n"
-
-	size = 1
-	str += text.SprintOperationInfo(gotext.Get("Repository AUR"), "\n    ")
-
-	for _, pkg := range providers.Pkgs {
-		str += fmt.Sprintf("%d) %s ", size, pkg.Name)
-		size++
-	}
-
-	text.OperationInfoln(str)
-
-	for {
-		fmt.Println(gotext.Get("\nEnter a number (default=1): "))
-
-		if noConfirm {
-			fmt.Println("1")
-			return providers.Pkgs[0]
-		}
-
-		numberBuf, err := text.GetInput(os.Stdin, "", false)
-		if err != nil {
-			fmt.Fprintln(os.Stderr, err)
-
-			break
-		}
-
-		if numberBuf == "" {
-			return providers.Pkgs[0]
-		}
-
-		num, err := strconv.Atoi(numberBuf)
-		if err != nil {
-			text.Errorln(gotext.Get("invalid number: %s", numberBuf))
-			continue
-		}
-
-		if num < 1 || num >= size {
-			text.Errorln(gotext.Get("invalid value: %d is not between %d and %d", num, 1, size-1))
-			continue
-		}
-
-		return providers.Pkgs[num-1]
-	}
-
-	return nil
-}

+ 0 - 40
pkg/menus/clean_menu.go

@@ -3,7 +3,6 @@ package menus
 
 
 import (
 import (
 	"context"
 	"context"
-	"fmt"
 	"io"
 	"io"
 	"os"
 	"os"
 
 
@@ -75,42 +74,3 @@ func CleanFn(ctx context.Context, config *settings.Configuration, w io.Writer, p
 
 
 	return nil
 	return nil
 }
 }
-
-func Clean(w io.Writer, cleanMenuOption bool, pkgbuildDirs map[string]string,
-	installed mapset.Set[string], noConfirm bool, answerClean string,
-) error {
-	if !(cleanMenuOption && anyExistInCache(pkgbuildDirs)) {
-		return nil
-	}
-
-	skipFunc := func(pkg string) bool {
-		dir := pkgbuildDirs[pkg]
-		if _, err := os.Stat(dir); os.IsNotExist(err) {
-			return true
-		}
-
-		return false
-	}
-
-	bases := make([]string, 0, len(pkgbuildDirs))
-	for pkg := range pkgbuildDirs {
-		bases = append(bases, pkg)
-	}
-
-	toClean, errClean := selectionMenu(w, pkgbuildDirs, bases, installed, gotext.Get("Packages to cleanBuild?"),
-		noConfirm, answerClean, skipFunc)
-	if errClean != nil {
-		return errClean
-	}
-
-	for i, base := range toClean {
-		dir := pkgbuildDirs[base]
-		text.OperationInfoln(gotext.Get("Deleting (%d/%d): %s", i+1, len(toClean), text.Cyan(dir)))
-
-		if err := os.RemoveAll(dir); err != nil {
-			fmt.Fprintln(os.Stderr, err)
-		}
-	}
-
-	return nil
-}

+ 0 - 36
pkg/menus/diff_menu.go

@@ -145,42 +145,6 @@ func updatePkgbuildSeenRef(ctx context.Context, cmdBuilder exe.ICmdBuilder, pkgb
 	return errMulti.Return()
 	return errMulti.Return()
 }
 }
 
 
-func Diff(ctx context.Context, cmdBuilder exe.ICmdBuilder, w io.Writer,
-	pkgbuildDirs map[string]string, diffMenuOption bool,
-	installed mapset.Set[string], cloned map[string]bool, noConfirm bool, diffDefaultAnswer string,
-) error {
-	if !diffMenuOption {
-		return nil
-	}
-
-	bases := make([]string, 0, len(pkgbuildDirs))
-	for base := range pkgbuildDirs {
-		bases = append(bases, base)
-	}
-
-	toDiff, errMenu := selectionMenu(w, pkgbuildDirs, bases, installed, gotext.Get("Diffs to show?"),
-		noConfirm, diffDefaultAnswer, nil)
-	if errMenu != nil || len(toDiff) == 0 {
-		return errMenu
-	}
-
-	if errD := showPkgbuildDiffs(ctx, cmdBuilder, pkgbuildDirs, toDiff); errD != nil {
-		return errD
-	}
-
-	fmt.Println()
-
-	if !text.ContinueTask(os.Stdin, gotext.Get("Proceed with install?"), true, false) {
-		return settings.ErrUserAbort{}
-	}
-
-	if errUpd := updatePkgbuildSeenRef(ctx, cmdBuilder, pkgbuildDirs, toDiff); errUpd != nil {
-		return errUpd
-	}
-
-	return nil
-}
-
 func DiffFn(ctx context.Context, config *settings.Configuration, w io.Writer, pkgbuildDirsByBase map[string]string) error {
 func DiffFn(ctx context.Context, config *settings.Configuration, w io.Writer, pkgbuildDirsByBase map[string]string) error {
 	if len(pkgbuildDirsByBase) == 0 {
 	if len(pkgbuildDirsByBase) == 0 {
 		return nil // no work to do
 		return nil // no work to do

+ 0 - 33
pkg/menus/edit_menu.go

@@ -4,7 +4,6 @@ package menus
 import (
 import (
 	"context"
 	"context"
 	"errors"
 	"errors"
-	"fmt"
 	"io"
 	"io"
 	"os"
 	"os"
 	"os/exec"
 	"os/exec"
@@ -114,38 +113,6 @@ func editPkgbuilds(log *text.Logger, pkgbuildDirs map[string]string, bases []str
 	return nil
 	return nil
 }
 }
 
 
-func Edit(w io.Writer, log *text.Logger, editMenuOption bool, pkgbuildDirs map[string]string, editorConfig,
-	editorFlags string, installed mapset.Set[string], srcinfos map[string]*gosrc.Srcinfo,
-	noConfirm bool, editDefaultAnswer string,
-) error {
-	if !editMenuOption {
-		return nil
-	}
-
-	bases := make([]string, 0, len(pkgbuildDirs))
-	for pkg := range pkgbuildDirs {
-		bases = append(bases, pkg)
-	}
-
-	toEdit, errMenu := selectionMenu(w, pkgbuildDirs, bases,
-		installed, gotext.Get("PKGBUILDs to edit?"), noConfirm, editDefaultAnswer, nil)
-	if errMenu != nil || len(toEdit) == 0 {
-		return errMenu
-	}
-
-	if errEdit := editPkgbuilds(log, pkgbuildDirs, toEdit, editorConfig, editorFlags, srcinfos, noConfirm); errEdit != nil {
-		return errEdit
-	}
-
-	fmt.Println()
-
-	if !text.ContinueTask(os.Stdin, gotext.Get("Proceed with install?"), true, false) {
-		return settings.ErrUserAbort{}
-	}
-
-	return nil
-}
-
 func EditFn(ctx context.Context, cfg *settings.Configuration, w io.Writer,
 func EditFn(ctx context.Context, cfg *settings.Configuration, w io.Writer,
 	pkgbuildDirsByBase map[string]string,
 	pkgbuildDirsByBase map[string]string,
 ) error {
 ) error {

+ 0 - 101
pkg/query/aur_info.go

@@ -1,101 +0,0 @@
-package query
-
-import (
-	"context"
-	"sync"
-
-	"github.com/Jguer/aur"
-	"github.com/Jguer/aur/rpc"
-	"github.com/leonelquinteros/gotext"
-
-	"github.com/Jguer/yay/v12/pkg/intrange"
-	"github.com/Jguer/yay/v12/pkg/multierror"
-	"github.com/Jguer/yay/v12/pkg/text"
-)
-
-type Pkg = aur.Pkg
-
-// Queries the aur for information about specified packages.
-// All packages should be queried in a single aur request except when the number
-// of packages exceeds the number set in config.RequestSplitN.
-// If the number does exceed config.RequestSplitN multiple aur requests will be
-// performed concurrently.
-func AURInfo(ctx context.Context, aurClient rpc.ClientInterface, names []string, warnings *AURWarnings, splitN int) ([]Pkg, error) {
-	info := make([]Pkg, 0, len(names))
-	seen := make(map[string]int)
-
-	var (
-		mux  sync.Mutex
-		wg   sync.WaitGroup
-		errs multierror.MultiError
-	)
-
-	makeRequest := func(n, max int) {
-		defer wg.Done()
-
-		text.Debugln("AUR RPC:", names[n:max])
-
-		tempInfo, requestErr := aurClient.Info(ctx, names[n:max])
-		if requestErr != nil {
-			errs.Add(requestErr)
-			return
-		}
-
-		mux.Lock()
-		info = append(info, tempInfo...)
-		mux.Unlock()
-	}
-
-	for n := 0; n < len(names); n += splitN {
-		max := intrange.Min(len(names), n+splitN)
-
-		wg.Add(1)
-
-		go makeRequest(n, max)
-	}
-
-	wg.Wait()
-
-	if err := errs.Return(); err != nil {
-		return info, err
-	}
-
-	for k := range info {
-		seen[info[k].Name] = k
-	}
-
-	for _, name := range names {
-		i, ok := seen[name]
-		if !ok && !warnings.Ignore.Get(name) {
-			warnings.Missing = append(warnings.Missing, name)
-			continue
-		}
-
-		pkg := info[i]
-
-		if pkg.Maintainer == "" && !warnings.Ignore.Get(name) {
-			warnings.Orphans = append(warnings.Orphans, name)
-		}
-
-		if pkg.OutOfDate != 0 && !warnings.Ignore.Get(name) {
-			warnings.OutOfDate = append(warnings.OutOfDate, name)
-		}
-	}
-
-	return info, nil
-}
-
-func AURInfoPrint(ctx context.Context, aurClient rpc.ClientInterface, names []string, splitN int) ([]Pkg, error) {
-	text.OperationInfoln(gotext.Get("Querying AUR..."))
-
-	warnings := NewWarnings(nil)
-
-	info, err := AURInfo(ctx, aurClient, names, warnings, splitN)
-	if err != nil {
-		return info, err
-	}
-
-	warnings.Print()
-
-	return info, nil
-}

+ 2 - 0
pkg/query/types.go

@@ -12,6 +12,8 @@ import (
 	"github.com/Jguer/yay/v12/pkg/text"
 	"github.com/Jguer/yay/v12/pkg/text"
 )
 )
 
 
+type Pkg = aur.Pkg
+
 func getSearchBy(value string) aur.By {
 func getSearchBy(value string) aur.By {
 	switch value {
 	switch value {
 	case "name":
 	case "name":

+ 0 - 4
pkg/settings/args.go

@@ -169,10 +169,6 @@ func (c *Configuration) handleOption(option, value string) bool {
 		c.PGPFetch = true
 		c.PGPFetch = true
 	case "nopgpfetch":
 	case "nopgpfetch":
 		c.PGPFetch = false
 		c.PGPFetch = false
-	case "upgrademenu":
-		c.UpgradeMenu = true
-	case "noupgrademenu":
-		c.UpgradeMenu = false
 	case "cleanmenu":
 	case "cleanmenu":
 		c.CleanMenu = true
 		c.CleanMenu = true
 	case "nocleanmenu":
 	case "nocleanmenu":

+ 0 - 4
pkg/settings/config.go

@@ -60,7 +60,6 @@ type Configuration struct {
 	CleanAfter             bool     `json:"cleanAfter"`
 	CleanAfter             bool     `json:"cleanAfter"`
 	Provides               bool     `json:"provides"`
 	Provides               bool     `json:"provides"`
 	PGPFetch               bool     `json:"pgpfetch"`
 	PGPFetch               bool     `json:"pgpfetch"`
-	UpgradeMenu            bool     `json:"upgrademenu"`
 	CleanMenu              bool     `json:"cleanmenu"`
 	CleanMenu              bool     `json:"cleanmenu"`
 	DiffMenu               bool     `json:"diffmenu"`
 	DiffMenu               bool     `json:"diffmenu"`
 	EditMenu               bool     `json:"editmenu"`
 	EditMenu               bool     `json:"editmenu"`
@@ -69,7 +68,6 @@ type Configuration struct {
 	BatchInstall           bool     `json:"batchinstall"`
 	BatchInstall           bool     `json:"batchinstall"`
 	SingleLineResults      bool     `json:"singlelineresults"`
 	SingleLineResults      bool     `json:"singlelineresults"`
 	SeparateSources        bool     `json:"separatesources"`
 	SeparateSources        bool     `json:"separatesources"`
-	NewInstallEngine       bool     `json:"newinstallengine"`
 	Debug                  bool     `json:"debug"`
 	Debug                  bool     `json:"debug"`
 	UseRPC                 bool     `json:"rpc"`
 	UseRPC                 bool     `json:"rpc"`
 	DoubleConfirm          bool     `json:"doubleconfirm"` // confirm install before and after build
 	DoubleConfirm          bool     `json:"doubleconfirm"` // confirm install before and after build
@@ -229,14 +227,12 @@ func DefaultConfig(version string) *Configuration {
 		AnswerUpgrade:          "",
 		AnswerUpgrade:          "",
 		RemoveMake:             "ask",
 		RemoveMake:             "ask",
 		Provides:               true,
 		Provides:               true,
-		UpgradeMenu:            true,
 		CleanMenu:              true,
 		CleanMenu:              true,
 		DiffMenu:               true,
 		DiffMenu:               true,
 		EditMenu:               false,
 		EditMenu:               false,
 		UseAsk:                 false,
 		UseAsk:                 false,
 		CombinedUpgrade:        true,
 		CombinedUpgrade:        true,
 		SeparateSources:        true,
 		SeparateSources:        true,
-		NewInstallEngine:       true,
 		Version:                version,
 		Version:                version,
 		Debug:                  false,
 		Debug:                  false,
 		UseRPC:                 true,
 		UseRPC:                 true,

+ 0 - 2
pkg/settings/parser/parser.go

@@ -425,8 +425,6 @@ func isArg(arg string) bool {
 	case "noprovides":
 	case "noprovides":
 	case "pgpfetch":
 	case "pgpfetch":
 	case "nopgpfetch":
 	case "nopgpfetch":
-	case "upgrademenu":
-	case "noupgrademenu":
 	case "cleanmenu":
 	case "cleanmenu":
 	case "nocleanmenu":
 	case "nocleanmenu":
 	case "diffmenu":
 	case "diffmenu":

+ 2 - 4
pkg/settings/runtime.go

@@ -29,9 +29,8 @@ type Runtime struct {
 	VCSStore     vcs.Store
 	VCSStore     vcs.Store
 	CmdBuilder   exe.ICmdBuilder
 	CmdBuilder   exe.ICmdBuilder
 	HTTPClient   *http.Client
 	HTTPClient   *http.Client
-	AURClient    *rpc.Client
 	VoteClient   *vote.Client
 	VoteClient   *vote.Client
-	AURCache     aur.QueryClient
+	AURClient    aur.QueryClient
 	DBExecutor   db.Executor
 	DBExecutor   db.Executor
 	Logger       *text.Logger
 	Logger       *text.Logger
 }
 }
@@ -101,9 +100,8 @@ func BuildRuntime(cfg *Configuration, cmdArgs *parser.Arguments, version string)
 		VCSStore:     vcsStore,
 		VCSStore:     vcsStore,
 		CmdBuilder:   cmdBuilder,
 		CmdBuilder:   cmdBuilder,
 		HTTPClient:   &http.Client{},
 		HTTPClient:   &http.Client{},
-		AURClient:    aurClient,
 		VoteClient:   voteClient,
 		VoteClient:   voteClient,
-		AURCache:     aurCache,
+		AURClient:    aurCache,
 		DBExecutor:   nil,
 		DBExecutor:   nil,
 		Logger:       text.NewLogger(os.Stdout, os.Stderr, os.Stdin, cfg.Debug, "runtime"),
 		Logger:       text.NewLogger(os.Stdout, os.Stderr, os.Stdin, cfg.Debug, "runtime"),
 	}
 	}

+ 1 - 2
pkg/settings/runtime_test.go

@@ -39,9 +39,8 @@ func TestBuildRuntime(t *testing.T) {
 	assert.NotNil(t, runtime.VCSStore)
 	assert.NotNil(t, runtime.VCSStore)
 	assert.NotNil(t, runtime.CmdBuilder)
 	assert.NotNil(t, runtime.CmdBuilder)
 	assert.NotNil(t, runtime.HTTPClient)
 	assert.NotNil(t, runtime.HTTPClient)
-	assert.NotNil(t, runtime.AURClient)
 	assert.NotNil(t, runtime.VoteClient)
 	assert.NotNil(t, runtime.VoteClient)
-	assert.NotNil(t, runtime.AURCache)
+	assert.NotNil(t, runtime.AURClient)
 	assert.Nil(t, runtime.DBExecutor)
 	assert.Nil(t, runtime.DBExecutor)
 	assert.NotNil(t, runtime.Logger)
 	assert.NotNil(t, runtime.Logger)
 }
 }

+ 24 - 10
preparer.go

@@ -38,21 +38,31 @@ type Hook struct {
 }
 }
 
 
 type Preparer struct {
 type Preparer struct {
-	dbExecutor db.Executor
-	cmdBuilder exe.ICmdBuilder
-	cfg        *settings.Configuration
-	hooks      []Hook
+	dbExecutor      db.Executor
+	cmdBuilder      exe.ICmdBuilder
+	cfg             *settings.Configuration
+	hooks           []Hook
+	downloadSources bool
 
 
 	makeDeps []string
 	makeDeps []string
 }
 }
 
 
-func NewPreparer(dbExecutor db.Executor, cmdBuilder exe.ICmdBuilder, cfg *settings.Configuration) *Preparer {
-	preper := &Preparer{
-		dbExecutor: dbExecutor,
-		cmdBuilder: cmdBuilder,
-		cfg:        cfg,
-		hooks:      []Hook{},
+func NewPreparerWithoutHooks(dbExecutor db.Executor, cmdBuilder exe.ICmdBuilder,
+	cfg *settings.Configuration, downloadSources bool,
+) *Preparer {
+	return &Preparer{
+		dbExecutor:      dbExecutor,
+		cmdBuilder:      cmdBuilder,
+		cfg:             cfg,
+		hooks:           []Hook{},
+		downloadSources: downloadSources,
 	}
 	}
+}
+
+func NewPreparer(dbExecutor db.Executor, cmdBuilder exe.ICmdBuilder,
+	cfg *settings.Configuration,
+) *Preparer {
+	preper := NewPreparerWithoutHooks(dbExecutor, cmdBuilder, cfg, true)
 
 
 	if cfg.CleanMenu {
 	if cfg.CleanMenu {
 		preper.hooks = append(preper.hooks, Hook{
 		preper.hooks = append(preper.hooks, Hook{
@@ -194,6 +204,10 @@ func (preper *Preparer) PrepareWorkspace(ctx context.Context, targets []map[stri
 		return nil, errA
 		return nil, errA
 	}
 	}
 
 
+	if !preper.downloadSources {
+		return pkgBuildDirsByBase, nil
+	}
+
 	if err := mergePkgbuilds(ctx, preper.cmdBuilder, pkgBuildDirsByBase); err != nil {
 	if err := mergePkgbuilds(ctx, preper.cmdBuilder, pkgBuildDirsByBase); err != nil {
 		return nil, err
 		return nil, err
 	}
 	}

+ 19 - 5
print.go

@@ -20,8 +20,8 @@ import (
 	"github.com/Jguer/yay/v12/pkg/upgrade"
 	"github.com/Jguer/yay/v12/pkg/upgrade"
 )
 )
 
 
-// PrintInfo prints package info like pacman -Si.
-func PrintInfo(config *settings.Configuration, a *aur.Pkg, extendedInfo bool) {
+// printInfo prints package info like pacman -Si.
+func printInfo(config *settings.Configuration, a *aur.Pkg, extendedInfo bool) {
 	text.PrintInfoValue(gotext.Get("Repository"), "aur")
 	text.PrintInfoValue(gotext.Get("Repository"), "aur")
 	text.PrintInfoValue(gotext.Get("Name"), a.Name)
 	text.PrintInfoValue(gotext.Get("Name"), a.Name)
 	text.PrintInfoValue(gotext.Get("Keywords"), a.Keywords...)
 	text.PrintInfoValue(gotext.Get("Keywords"), a.Keywords...)
@@ -77,6 +77,7 @@ func localStatistics(ctx context.Context, cfg *settings.Configuration, dbExecuto
 	info := statistics(cfg, dbExecutor)
 	info := statistics(cfg, dbExecutor)
 
 
 	remoteNames := dbExecutor.InstalledRemotePackageNames()
 	remoteNames := dbExecutor.InstalledRemotePackageNames()
+	remote := dbExecutor.InstalledRemotePackages()
 	text.Infoln(gotext.Get("Yay version v%s", yayVersion))
 	text.Infoln(gotext.Get("Yay version v%s", yayVersion))
 	fmt.Println(text.Bold(text.Cyan("===========================================")))
 	fmt.Println(text.Bold(text.Cyan("===========================================")))
 	text.Infoln(gotext.Get("Total installed packages: %s", text.Cyan(strconv.Itoa(info.Totaln))))
 	text.Infoln(gotext.Get("Total installed packages: %s", text.Cyan(strconv.Itoa(info.Totaln))))
@@ -94,7 +95,20 @@ func localStatistics(ctx context.Context, cfg *settings.Configuration, dbExecuto
 	biggestPackages(dbExecutor)
 	biggestPackages(dbExecutor)
 	fmt.Println(text.Bold(text.Cyan("===========================================")))
 	fmt.Println(text.Bold(text.Cyan("===========================================")))
 
 
-	query.AURInfoPrint(ctx, cfg.Runtime.AURClient, remoteNames, cfg.RequestSplitN)
+	aurData, err := cfg.Runtime.AURClient.Get(ctx, &aur.Query{
+		Needles: remoteNames,
+		By:      aur.Name,
+	})
+	if err != nil {
+		return err
+	}
+
+	warnings := query.NewWarnings(cfg.Runtime.Logger.Child("print"))
+	for i := range aurData {
+		warnings.AddToWarnings(remote, &aurData[i])
+	}
+
+	warnings.Print()
 
 
 	return nil
 	return nil
 }
 }
@@ -113,11 +127,11 @@ func printUpdateList(ctx context.Context, cfg *settings.Configuration, cmdArgs *
 	defer func() { settings.NoConfirm = oldNoConfirm }()
 	defer func() { settings.NoConfirm = oldNoConfirm }()
 
 
 	targets := mapset.NewThreadUnsafeSet(cmdArgs.Targets...)
 	targets := mapset.NewThreadUnsafeSet(cmdArgs.Targets...)
-	grapher := dep.NewGrapher(dbExecutor, cfg.Runtime.AURCache, false, true,
+	grapher := dep.NewGrapher(dbExecutor, cfg.Runtime.AURClient, false, true,
 		false, false, cmdArgs.ExistsArg("needed"), logger.Child("grapher"))
 		false, false, cmdArgs.ExistsArg("needed"), logger.Child("grapher"))
 
 
 	upService := upgrade.NewUpgradeService(
 	upService := upgrade.NewUpgradeService(
-		grapher, cfg.Runtime.AURCache, dbExecutor, cfg.Runtime.VCSStore,
+		grapher, cfg.Runtime.AURClient, dbExecutor, cfg.Runtime.VCSStore,
 		cfg, true, logger.Child("upgrade"))
 		cfg, true, logger.Child("upgrade"))
 
 
 	graph, errSysUp := upService.GraphUpgrades(ctx, nil,
 	graph, errSysUp := upService.GraphUpgrades(ctx, nil,

+ 2 - 3
print_test.go

@@ -272,13 +272,12 @@ func TestPrintUpdateList(t *testing.T) {
 			}
 			}
 
 
 			cfg := &settings.Configuration{
 			cfg := &settings.Configuration{
-				NewInstallEngine: true,
-				RemoveMake:       "no",
+				RemoveMake: "no",
 				Runtime: &settings.Runtime{
 				Runtime: &settings.Runtime{
 					Logger:     NewTestLogger(),
 					Logger:     NewTestLogger(),
 					CmdBuilder: cmdBuilder,
 					CmdBuilder: cmdBuilder,
 					VCSStore:   &vcs.Mock{},
 					VCSStore:   &vcs.Mock{},
-					AURCache:   tc.mockData.aurCache,
+					AURClient:  tc.mockData.aurCache,
 				},
 				},
 			}
 			}
 
 

+ 2 - 2
query.go

@@ -52,7 +52,7 @@ func syncInfo(ctx context.Context, cfg *settings.Configuration,
 			noDB = append(noDB, name)
 			noDB = append(noDB, name)
 		}
 		}
 
 
-		info, err = cfg.Runtime.AURCache.Get(ctx, &aur.Query{
+		info, err = cfg.Runtime.AURClient.Get(ctx, &aur.Query{
 			Needles: noDB,
 			Needles: noDB,
 			By:      aur.Name,
 			By:      aur.Name,
 		})
 		})
@@ -81,7 +81,7 @@ func syncInfo(ctx context.Context, cfg *settings.Configuration,
 
 
 	if len(info) != 0 {
 	if len(info) != 0 {
 		for i := range info {
 		for i := range info {
-			PrintInfo(cfg, &info[i], cmdArgs.ExistsDouble("i"))
+			printInfo(cfg, &info[i], cmdArgs.ExistsDouble("i"))
 		}
 		}
 	}
 	}
 
 

+ 2 - 2
query_test.go

@@ -128,7 +128,7 @@ func TestSyncInfo(t *testing.T) {
 			cfg := &settings.Configuration{
 			cfg := &settings.Configuration{
 				Runtime: &settings.Runtime{
 				Runtime: &settings.Runtime{
 					CmdBuilder: cmdBuilder,
 					CmdBuilder: cmdBuilder,
-					AURCache:   mockAUR,
+					AURClient:  mockAUR,
 					Logger:     NewTestLogger(),
 					Logger:     NewTestLogger(),
 				},
 				},
 			}
 			}
@@ -269,7 +269,7 @@ func TestSyncSearchAURDB(t *testing.T) {
 			cfg := &settings.Configuration{
 			cfg := &settings.Configuration{
 				Runtime: &settings.Runtime{
 				Runtime: &settings.Runtime{
 					CmdBuilder: cmdBuilder,
 					CmdBuilder: cmdBuilder,
-					AURCache:   mockAUR,
+					AURClient:  mockAUR,
 					QueryBuilder: query.NewSourceQueryBuilder(mockAUR, NewTestLogger(), "votes", parser.ModeAny, "name",
 					QueryBuilder: query.NewSourceQueryBuilder(mockAUR, NewTestLogger(), "votes", parser.ModeAny, "name",
 						tc.bottomUp, tc.singleLine, tc.mixed),
 						tc.bottomUp, tc.singleLine, tc.mixed),
 					Logger: NewTestLogger(),
 					Logger: NewTestLogger(),

+ 1 - 1
sync.go

@@ -24,7 +24,7 @@ func syncInstall(ctx context.Context,
 	cmdArgs *parser.Arguments,
 	cmdArgs *parser.Arguments,
 	dbExecutor db.Executor,
 	dbExecutor db.Executor,
 ) error {
 ) error {
-	aurCache := cfg.Runtime.AURCache
+	aurCache := cfg.Runtime.AURClient
 	refreshArg := cmdArgs.ExistsArg("y", "refresh")
 	refreshArg := cmdArgs.ExistsArg("y", "refresh")
 	noDeps := cmdArgs.ExistsArg("d", "nodeps")
 	noDeps := cmdArgs.ExistsArg("d", "nodeps")
 	noCheck := strings.Contains(cfg.MFlags, "--nocheck")
 	noCheck := strings.Contains(cfg.MFlags, "--nocheck")

+ 13 - 18
sync_test.go

@@ -107,13 +107,12 @@ func TestSyncUpgrade(t *testing.T) {
 	}
 	}
 
 
 	cfg := &settings.Configuration{
 	cfg := &settings.Configuration{
-		NewInstallEngine: true,
-		RemoveMake:       "no",
+		RemoveMake: "no",
 		Runtime: &settings.Runtime{
 		Runtime: &settings.Runtime{
 			Logger:     text.NewLogger(io.Discard, os.Stderr, strings.NewReader("\n"), true, "test"),
 			Logger:     text.NewLogger(io.Discard, os.Stderr, strings.NewReader("\n"), true, "test"),
 			CmdBuilder: cmdBuilder,
 			CmdBuilder: cmdBuilder,
 			VCSStore:   &vcs.Mock{},
 			VCSStore:   &vcs.Mock{},
-			AURCache: &mockaur.MockAUR{
+			AURClient: &mockaur.MockAUR{
 				GetFn: func(ctx context.Context, query *aur.Query) ([]aur.Pkg, error) {
 				GetFn: func(ctx context.Context, query *aur.Query) ([]aur.Pkg, error) {
 					return []aur.Pkg{}, nil
 					return []aur.Pkg{}, nil
 				},
 				},
@@ -221,13 +220,12 @@ func TestSyncUpgrade_IgnoreAll(t *testing.T) {
 	}
 	}
 
 
 	cfg := &settings.Configuration{
 	cfg := &settings.Configuration{
-		NewInstallEngine: true,
-		RemoveMake:       "no",
+		RemoveMake: "no",
 		Runtime: &settings.Runtime{
 		Runtime: &settings.Runtime{
 			Logger:     text.NewLogger(io.Discard, os.Stderr, strings.NewReader("1\n"), true, "test"),
 			Logger:     text.NewLogger(io.Discard, os.Stderr, strings.NewReader("1\n"), true, "test"),
 			CmdBuilder: cmdBuilder,
 			CmdBuilder: cmdBuilder,
 			VCSStore:   &vcs.Mock{},
 			VCSStore:   &vcs.Mock{},
-			AURCache: &mockaur.MockAUR{
+			AURClient: &mockaur.MockAUR{
 				GetFn: func(ctx context.Context, query *aur.Query) ([]aur.Pkg, error) {
 				GetFn: func(ctx context.Context, query *aur.Query) ([]aur.Pkg, error) {
 					return []aur.Pkg{}, nil
 					return []aur.Pkg{}, nil
 				},
 				},
@@ -352,13 +350,12 @@ func TestSyncUpgrade_IgnoreOne(t *testing.T) {
 	}
 	}
 
 
 	cfg := &settings.Configuration{
 	cfg := &settings.Configuration{
-		NewInstallEngine: true,
-		RemoveMake:       "no",
+		RemoveMake: "no",
 		Runtime: &settings.Runtime{
 		Runtime: &settings.Runtime{
 			Logger:     text.NewLogger(io.Discard, os.Stderr, strings.NewReader("1\n"), true, "test"),
 			Logger:     text.NewLogger(io.Discard, os.Stderr, strings.NewReader("1\n"), true, "test"),
 			CmdBuilder: cmdBuilder,
 			CmdBuilder: cmdBuilder,
 			VCSStore:   &vcs.Mock{},
 			VCSStore:   &vcs.Mock{},
-			AURCache: &mockaur.MockAUR{
+			AURClient: &mockaur.MockAUR{
 				GetFn: func(ctx context.Context, query *aur.Query) ([]aur.Pkg, error) {
 				GetFn: func(ctx context.Context, query *aur.Query) ([]aur.Pkg, error) {
 					return []aur.Pkg{}, nil
 					return []aur.Pkg{}, nil
 				},
 				},
@@ -516,15 +513,14 @@ pkgname = python-vosk
 	}
 	}
 
 
 	cfg := &settings.Configuration{
 	cfg := &settings.Configuration{
-		DoubleConfirm:    true,
-		NewInstallEngine: true,
-		RemoveMake:       "no",
-		BuildDir:         tmpDir,
+		DoubleConfirm: true,
+		RemoveMake:    "no",
+		BuildDir:      tmpDir,
 		Runtime: &settings.Runtime{
 		Runtime: &settings.Runtime{
 			Logger:     text.NewLogger(io.Discard, os.Stderr, strings.NewReader("\n\n\n\n"), true, "test"),
 			Logger:     text.NewLogger(io.Discard, os.Stderr, strings.NewReader("\n\n\n\n"), true, "test"),
 			CmdBuilder: cmdBuilder,
 			CmdBuilder: cmdBuilder,
 			VCSStore:   &vcs.Mock{},
 			VCSStore:   &vcs.Mock{},
-			AURCache: &mockaur.MockAUR{
+			AURClient: &mockaur.MockAUR{
 				GetFn: func(ctx context.Context, query *aur.Query) ([]aur.Pkg, error) {
 				GetFn: func(ctx context.Context, query *aur.Query) ([]aur.Pkg, error) {
 					return []aur.Pkg{
 					return []aur.Pkg{
 						{
 						{
@@ -702,14 +698,13 @@ func TestSyncUpgrade_NoCombinedUpgrade(t *testing.T) {
 			}
 			}
 
 
 			cfg := &settings.Configuration{
 			cfg := &settings.Configuration{
-				NewInstallEngine: true,
-				RemoveMake:       "no",
-				CombinedUpgrade:  false,
+				RemoveMake:      "no",
+				CombinedUpgrade: false,
 				Runtime: &settings.Runtime{
 				Runtime: &settings.Runtime{
 					Logger:     text.NewLogger(io.Discard, os.Stderr, strings.NewReader("1\n"), true, "test"),
 					Logger:     text.NewLogger(io.Discard, os.Stderr, strings.NewReader("1\n"), true, "test"),
 					CmdBuilder: cmdBuilder,
 					CmdBuilder: cmdBuilder,
 					VCSStore:   &vcs.Mock{},
 					VCSStore:   &vcs.Mock{},
-					AURCache: &mockaur.MockAUR{
+					AURClient: &mockaur.MockAUR{
 						GetFn: func(ctx context.Context, query *aur.Query) ([]aur.Pkg, error) {
 						GetFn: func(ctx context.Context, query *aur.Query) ([]aur.Pkg, error) {
 							return []aur.Pkg{}, nil
 							return []aur.Pkg{}, nil
 						},
 						},

+ 0 - 276
upgrade.go

@@ -1,276 +0,0 @@
-package main
-
-import (
-	"context"
-	"fmt"
-	"os"
-	"sort"
-	"strings"
-	"sync"
-
-	"github.com/Jguer/yay/v12/pkg/db"
-	"github.com/Jguer/yay/v12/pkg/intrange"
-	"github.com/Jguer/yay/v12/pkg/multierror"
-	"github.com/Jguer/yay/v12/pkg/query"
-	"github.com/Jguer/yay/v12/pkg/settings"
-	"github.com/Jguer/yay/v12/pkg/stringset"
-	"github.com/Jguer/yay/v12/pkg/text"
-	"github.com/Jguer/yay/v12/pkg/upgrade"
-
-	aur "github.com/Jguer/aur"
-	alpm "github.com/Jguer/go-alpm/v2"
-	"github.com/leonelquinteros/gotext"
-)
-
-func filterUpdateList(list []db.Upgrade, filter upgrade.Filter) []db.Upgrade {
-	tmp := list[:0]
-
-	for i := range list {
-		up := &list[i]
-		if filter(up) {
-			tmp = append(tmp, *up)
-		}
-	}
-
-	return tmp
-}
-
-// upList returns lists of packages to upgrade from each source.
-func upList(ctx context.Context, cfg *settings.Configuration,
-	warnings *query.AURWarnings, dbExecutor db.Executor, enableDowngrade bool,
-	filter upgrade.Filter,
-) (aurUp, repoUp upgrade.UpSlice, err error) {
-	remote := dbExecutor.InstalledRemotePackages()
-	remoteNames := dbExecutor.InstalledRemotePackageNames()
-
-	var (
-		wg           sync.WaitGroup
-		develUp      upgrade.UpSlice
-		syncUpgrades map[string]db.SyncUpgrade
-		errs         multierror.MultiError
-	)
-
-	aurdata := make(map[string]*aur.Pkg)
-
-	for _, pkg := range remote {
-		if pkg.ShouldIgnore() {
-			warnings.Ignore.Set(pkg.Name())
-		}
-	}
-
-	if cfg.Mode.AtLeastRepo() {
-		text.OperationInfoln(gotext.Get("Searching databases for updates..."))
-		wg.Add(1)
-
-		go func() {
-			syncUpgrades, err = dbExecutor.SyncUpgrades(enableDowngrade)
-			errs.Add(err)
-			wg.Done()
-		}()
-	}
-
-	if cfg.Mode.AtLeastAUR() {
-		text.OperationInfoln(gotext.Get("Searching AUR for updates..."))
-
-		var _aurdata []aur.Pkg
-		_aurdata, err = query.AURInfo(ctx, cfg.Runtime.AURClient, remoteNames, warnings, cfg.RequestSplitN)
-
-		errs.Add(err)
-
-		if err == nil {
-			for i := range _aurdata {
-				pkg := &_aurdata[i]
-				aurdata[pkg.Name] = pkg
-			}
-
-			wg.Add(1)
-
-			go func() {
-				aurUp = upgrade.UpAUR(cfg.Runtime.Logger, remote, aurdata, cfg.TimeUpdate, enableDowngrade)
-
-				wg.Done()
-			}()
-
-			if cfg.Devel {
-				text.OperationInfoln(gotext.Get("Checking development packages..."))
-				wg.Add(1)
-
-				go func() {
-					develUp = upgrade.UpDevel(ctx, cfg.Runtime.Logger, remote, aurdata, cfg.Runtime.VCSStore)
-
-					cfg.Runtime.VCSStore.CleanOrphans(remote)
-					wg.Done()
-				}()
-			}
-		}
-	}
-
-	wg.Wait()
-
-	printLocalNewerThanAUR(remote, aurdata)
-
-	names := make(stringset.StringSet)
-
-	for _, up := range develUp.Up {
-		names.Set(up.Name)
-	}
-
-	for _, up := range aurUp.Up {
-		if !names.Get(up.Name) {
-			develUp.Up = append(develUp.Up, up)
-		}
-	}
-
-	aurUp = develUp
-	aurUp.Repos = []string{"aur", "devel"}
-
-	repoUp = upgrade.UpSlice{
-		Up:    make([]db.Upgrade, 0, len(syncUpgrades)),
-		Repos: dbExecutor.Repos(),
-	}
-	for _, up := range syncUpgrades {
-		dbUp := db.Upgrade{
-			Name:          up.Package.Name(),
-			RemoteVersion: up.Package.Version(),
-			Repository:    up.Package.DB().Name(),
-			Base:          up.Package.Base(),
-			LocalVersion:  up.LocalVersion,
-			Reason:        up.Reason,
-		}
-		if filter != nil && !filter(&dbUp) {
-			continue
-		}
-
-		repoUp.Up = append(repoUp.Up, dbUp)
-	}
-
-	aurUp.Up = filterUpdateList(aurUp.Up, filter)
-	repoUp.Up = filterUpdateList(repoUp.Up, filter)
-
-	return aurUp, repoUp, errs.Return()
-}
-
-func printLocalNewerThanAUR(
-	remote map[string]alpm.IPackage, aurdata map[string]*aur.Pkg,
-) {
-	for name, pkg := range remote {
-		aurPkg, ok := aurdata[name]
-		if !ok {
-			continue
-		}
-
-		left, right := query.GetVersionDiff(pkg.Version(), aurPkg.Version)
-
-		if !isDevelPackage(pkg) && db.VerCmp(pkg.Version(), aurPkg.Version) > 0 {
-			text.Warnln(gotext.Get("%s: local (%s) is newer than AUR (%s)",
-				text.Cyan(name),
-				left, right,
-			))
-		}
-	}
-}
-
-func isDevelName(name string) bool {
-	for _, suffix := range []string{"git", "svn", "hg", "bzr", "nightly", "insiders-bin"} {
-		if strings.HasSuffix(name, "-"+suffix) {
-			return true
-		}
-	}
-
-	return strings.Contains(name, "-always-")
-}
-
-func isDevelPackage(pkg alpm.IPackage) bool {
-	return isDevelName(pkg.Name()) || isDevelName(pkg.Base())
-}
-
-// upgradePkgsMenu handles updating the cache and installing updates.
-func upgradePkgsMenu(cfg *settings.Configuration, aurUp, repoUp upgrade.UpSlice) (stringset.StringSet, []string, error) {
-	ignore := make(stringset.StringSet)
-	targets := []string{}
-
-	allUpLen := len(repoUp.Up) + len(aurUp.Up)
-	if allUpLen == 0 {
-		return ignore, nil, nil
-	}
-
-	if !cfg.UpgradeMenu {
-		for _, pkg := range aurUp.Up {
-			targets = append(targets, pkg.Repository+"/"+pkg.Name)
-		}
-
-		return ignore, targets, nil
-	}
-
-	sort.Sort(repoUp)
-	sort.Sort(aurUp)
-
-	allUp := upgrade.UpSlice{Up: append(repoUp.Up, aurUp.Up...), Repos: append(repoUp.Repos, aurUp.Repos...)}
-
-	fmt.Printf("%s"+text.Bold(" %d ")+"%s\n", text.Bold(text.Cyan("::")), allUpLen, text.Bold(gotext.Get("Packages to upgrade.")))
-	allUp.Print(cfg.Runtime.Logger)
-
-	text.Infoln(gotext.Get("Packages to exclude") + " (eg: \"1 2 3\", \"1-3\", \"^4\" or repo name):")
-
-	numbers, err := text.GetInput(os.Stdin, cfg.AnswerUpgrade, settings.NoConfirm)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	// upgrade menu asks you which packages to NOT upgrade so in this case
-	// include and exclude are kind of swapped
-	include, exclude, otherInclude, otherExclude := intrange.ParseNumberMenu(numbers)
-
-	isInclude := len(exclude) == 0 && len(otherExclude) == 0
-
-	for i, pkg := range repoUp.Up {
-		if isInclude && otherInclude.Get(pkg.Repository) {
-			ignore.Set(pkg.Name)
-		}
-
-		if isInclude && !include.Get(len(repoUp.Up)-i+len(aurUp.Up)) {
-			targets = append(targets, pkg.Repository+"/"+pkg.Name)
-			continue
-		}
-
-		if !isInclude && (exclude.Get(len(repoUp.Up)-i+len(aurUp.Up)) || otherExclude.Get(pkg.Repository)) {
-			targets = append(targets, pkg.Repository+"/"+pkg.Name)
-			continue
-		}
-
-		ignore.Set(pkg.Name)
-	}
-
-	for i, pkg := range aurUp.Up {
-		if isInclude && otherInclude.Get(pkg.Repository) {
-			continue
-		}
-
-		if isInclude && !include.Get(len(aurUp.Up)-i) {
-			targets = append(targets, "aur/"+pkg.Name)
-		}
-
-		if !isInclude && (exclude.Get(len(aurUp.Up)-i) || otherExclude.Get(pkg.Repository)) {
-			targets = append(targets, "aur/"+pkg.Name)
-		}
-	}
-
-	return ignore, targets, err
-}
-
-// Targets for sys upgrade.
-func sysupgradeTargets(ctx context.Context, cfg *settings.Configuration, dbExecutor db.Executor,
-	enableDowngrade bool,
-) (stringset.StringSet, []string, error) {
-	warnings := query.NewWarnings(cfg.Runtime.Logger)
-
-	aurUp, repoUp, err := upList(ctx, cfg, warnings, dbExecutor, enableDowngrade,
-		func(*upgrade.Upgrade) bool { return true })
-	if err != nil {
-		return nil, nil, err
-	}
-
-	warnings.Print()
-
-	return upgradePkgsMenu(cfg, aurUp, repoUp)
-}

+ 28 - 28
vcs.go

@@ -2,53 +2,53 @@ package main
 
 
 import (
 import (
 	"context"
 	"context"
-	"path/filepath"
-	"strings"
+	"os"
 	"sync"
 	"sync"
 
 
+	"github.com/Jguer/aur"
 	"github.com/leonelquinteros/gotext"
 	"github.com/leonelquinteros/gotext"
 
 
 	"github.com/Jguer/yay/v12/pkg/db"
 	"github.com/Jguer/yay/v12/pkg/db"
 	"github.com/Jguer/yay/v12/pkg/dep"
 	"github.com/Jguer/yay/v12/pkg/dep"
-	"github.com/Jguer/yay/v12/pkg/download"
-	"github.com/Jguer/yay/v12/pkg/query"
 	"github.com/Jguer/yay/v12/pkg/settings"
 	"github.com/Jguer/yay/v12/pkg/settings"
 	"github.com/Jguer/yay/v12/pkg/srcinfo"
 	"github.com/Jguer/yay/v12/pkg/srcinfo"
-	"github.com/Jguer/yay/v12/pkg/stringset"
 	"github.com/Jguer/yay/v12/pkg/text"
 	"github.com/Jguer/yay/v12/pkg/text"
 )
 )
 
 
+func infoToInstallInfo(info []aur.Pkg) []map[string]*dep.InstallInfo {
+	installInfo := make([]map[string]*dep.InstallInfo, 1)
+	installInfo[0] = map[string]*dep.InstallInfo{}
+
+	for i := range info {
+		pkg := &info[i]
+		installInfo[0][pkg.Name] = &dep.InstallInfo{
+			AURBase: &pkg.PackageBase,
+			Source:  dep.AUR,
+		}
+	}
+
+	return installInfo
+}
+
 // createDevelDB forces yay to create a DB of the existing development packages.
 // createDevelDB forces yay to create a DB of the existing development packages.
 func createDevelDB(ctx context.Context, cfg *settings.Configuration, dbExecutor db.Executor) error {
 func createDevelDB(ctx context.Context, cfg *settings.Configuration, dbExecutor db.Executor) error {
 	remoteNames := dbExecutor.InstalledRemotePackageNames()
 	remoteNames := dbExecutor.InstalledRemotePackageNames()
-	info, err := query.AURInfoPrint(ctx, cfg.Runtime.AURClient, remoteNames, cfg.RequestSplitN)
+
+	cfg.Runtime.QueryBuilder.Execute(ctx, dbExecutor, remoteNames)
+	info, err := cfg.Runtime.AURClient.Get(ctx, &aur.Query{
+		Needles:  remoteNames,
+		By:       aur.Name,
+		Contains: false,
+	})
 	if err != nil {
 	if err != nil {
 		return err
 		return err
 	}
 	}
 
 
-	bases := dep.GetBases(info)
-	toSkip := pkgbuildsToSkip(cfg, bases, stringset.FromSlice(remoteNames))
-
-	targets := make([]string, 0, len(bases))
-	pkgBuildDirsByBase := make(map[string]string, len(bases))
+	preper := NewPreparerWithoutHooks(dbExecutor, cfg.Runtime.CmdBuilder, cfg, false)
 
 
-	for _, base := range bases {
-		if !toSkip.Get(base.Pkgbase()) {
-			targets = append(targets, base.Pkgbase())
-		}
-
-		pkgBuildDirsByBase[base.Pkgbase()] = filepath.Join(cfg.BuildDir, base.Pkgbase())
-	}
-
-	toSkipSlice := toSkip.ToSlice()
-	if len(toSkipSlice) != 0 {
-		text.OperationInfoln(
-			gotext.Get("PKGBUILD up to date, Skipping (%d/%d): %s",
-				len(toSkipSlice), len(bases), text.Cyan(strings.Join(toSkipSlice, ", "))))
-	}
-
-	if _, errA := download.AURPKGBUILDRepos(ctx,
-		cfg.Runtime.CmdBuilder, targets, cfg.AURURL, cfg.BuildDir, false); errA != nil {
+	mapInfo := infoToInstallInfo(info)
+	pkgBuildDirsByBase, err := preper.Run(ctx, os.Stdout, mapInfo)
+	if err != nil {
 		return err
 		return err
 	}
 	}
 
 

+ 7 - 6
vote.go

@@ -5,11 +5,9 @@ import (
 	"errors"
 	"errors"
 	"fmt"
 	"fmt"
 
 
-	"github.com/Jguer/aur/rpc"
+	"github.com/Jguer/aur"
 	"github.com/Jguer/votar/pkg/vote"
 	"github.com/Jguer/votar/pkg/vote"
 	"github.com/leonelquinteros/gotext"
 	"github.com/leonelquinteros/gotext"
-
-	"github.com/Jguer/yay/v12/pkg/query"
 )
 )
 
 
 type ErrAURVote struct {
 type ErrAURVote struct {
@@ -22,10 +20,13 @@ func (e *ErrAURVote) Error() string {
 }
 }
 
 
 func handlePackageVote(ctx context.Context,
 func handlePackageVote(ctx context.Context,
-	targets []string, aurClient rpc.ClientInterface,
-	voteClient *vote.Client, splitN int, upvote bool,
+	targets []string, aurClient aur.QueryClient,
+	voteClient *vote.Client, upvote bool,
 ) error {
 ) error {
-	infos, err := query.AURInfoPrint(ctx, aurClient, targets, splitN)
+	infos, err := aurClient.Get(ctx, &aur.Query{
+		Needles: targets,
+		By:      aur.Name,
+	})
 	if err != nil {
 	if err != nil {
 		return err
 		return err
 	}
 	}