local_install.go 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. // Experimental code for install local with dependency refactoring
  2. // Not at feature parity with install.go
  3. package main
  4. import (
  5. "context"
  6. "os"
  7. "path/filepath"
  8. "strings"
  9. "github.com/Jguer/yay/v11/pkg/db"
  10. "github.com/Jguer/yay/v11/pkg/dep"
  11. "github.com/Jguer/yay/v11/pkg/settings"
  12. "github.com/Jguer/yay/v11/pkg/settings/parser"
  13. "github.com/Jguer/yay/v11/pkg/topo"
  14. gosrc "github.com/Morganamilo/go-srcinfo"
  15. "github.com/leonelquinteros/gotext"
  16. "github.com/pkg/errors"
  17. )
  18. var ErrInstallRepoPkgs = errors.New(gotext.Get("error installing repo packages"))
  19. func installLocalPKGBUILD(
  20. ctx context.Context,
  21. config *settings.Configuration,
  22. cmdArgs *parser.Arguments,
  23. dbExecutor db.Executor,
  24. ) error {
  25. aurCache := config.Runtime.AURCache
  26. noCheck := strings.Contains(config.MFlags, "--nocheck")
  27. if len(cmdArgs.Targets) < 1 {
  28. return errors.New(gotext.Get("no target directories specified"))
  29. }
  30. grapher := dep.NewGrapher(dbExecutor, aurCache, false, settings.NoConfirm, os.Stdout, cmdArgs.ExistsDouble("d", "nodeps"), noCheck)
  31. graph := topo.New[string, *dep.InstallInfo]()
  32. for _, target := range cmdArgs.Targets {
  33. var errG error
  34. pkgbuild, err := gosrc.ParseFile(filepath.Join(target, ".SRCINFO"))
  35. if err != nil {
  36. return errors.Wrap(err, gotext.Get("failed to parse .SRCINFO"))
  37. }
  38. graph, errG = grapher.GraphFromSrcInfo(ctx, graph, target, pkgbuild)
  39. if errG != nil {
  40. return err
  41. }
  42. }
  43. opService := NewOperationService(ctx, config, dbExecutor)
  44. return opService.Run(ctx, cmdArgs, graph.TopoSortedLayerMap())
  45. }