local_install.go 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  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. "github.com/Jguer/yay/v11/pkg/db"
  9. "github.com/Jguer/yay/v11/pkg/dep"
  10. "github.com/Jguer/yay/v11/pkg/settings"
  11. "github.com/Jguer/yay/v11/pkg/settings/parser"
  12. "github.com/Jguer/yay/v11/pkg/topo"
  13. gosrc "github.com/Morganamilo/go-srcinfo"
  14. "github.com/leonelquinteros/gotext"
  15. "github.com/pkg/errors"
  16. )
  17. var ErrInstallRepoPkgs = errors.New(gotext.Get("error installing repo packages"))
  18. func installLocalPKGBUILD(
  19. ctx context.Context,
  20. config *settings.Configuration,
  21. cmdArgs *parser.Arguments,
  22. dbExecutor db.Executor,
  23. ) error {
  24. aurCache := config.Runtime.AURCache
  25. if len(cmdArgs.Targets) < 1 {
  26. return errors.New(gotext.Get("no target directories specified"))
  27. }
  28. grapher := dep.NewGrapher(dbExecutor, aurCache, false, settings.NoConfirm, os.Stdout)
  29. graph := topo.New[string, *dep.InstallInfo]()
  30. for _, target := range cmdArgs.Targets {
  31. var errG error
  32. pkgbuild, err := gosrc.ParseFile(filepath.Join(target, ".SRCINFO"))
  33. if err != nil {
  34. return errors.Wrap(err, gotext.Get("failed to parse .SRCINFO"))
  35. }
  36. graph, errG = grapher.GraphFromSrcInfo(ctx, graph, target, pkgbuild)
  37. if errG != nil {
  38. return err
  39. }
  40. }
  41. opService := NewOperationService(ctx, config, dbExecutor)
  42. return opService.Run(ctx, cmdArgs, graph.TopoSortedLayerMap())
  43. }