main.go 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. package main
  2. import (
  3. "context"
  4. "fmt"
  5. "os"
  6. "path/filepath"
  7. "github.com/Jguer/yay/v11/pkg/db/ialpm"
  8. "github.com/Jguer/yay/v11/pkg/dep"
  9. "github.com/Jguer/yay/v11/pkg/settings"
  10. "github.com/Jguer/yay/v11/pkg/settings/parser"
  11. "github.com/Jguer/yay/v11/pkg/text"
  12. "github.com/Jguer/aur/metadata"
  13. "github.com/leonelquinteros/gotext"
  14. "github.com/pkg/errors"
  15. )
  16. func handleCmd() error {
  17. config, err := settings.NewConfig("")
  18. if err != nil {
  19. return err
  20. }
  21. cmdArgs := parser.MakeArguments()
  22. if errP := config.ParseCommandLine(cmdArgs); errP != nil {
  23. return errP
  24. }
  25. pacmanConf, _, err := settings.RetrievePacmanConfig(cmdArgs, config.PacmanConf)
  26. if err != nil {
  27. return err
  28. }
  29. dbExecutor, err := ialpm.NewExecutor(pacmanConf)
  30. if err != nil {
  31. return err
  32. }
  33. aurCache, err := metadata.New(
  34. metadata.WithCacheFilePath(
  35. filepath.Join(config.BuildDir, "aur.json")))
  36. if err != nil {
  37. return errors.Wrap(err, gotext.Get("failed to retrieve aur Cache"))
  38. }
  39. grapher := dep.NewGrapher(dbExecutor, aurCache, true, settings.NoConfirm, os.Stdout, cmdArgs.ExistsDouble("d", "nodeps"), false)
  40. return graphPackage(context.Background(), grapher, cmdArgs.Targets)
  41. }
  42. func main() {
  43. if err := handleCmd(); err != nil {
  44. text.Errorln(err)
  45. os.Exit(1)
  46. }
  47. }
  48. func graphPackage(
  49. ctx context.Context,
  50. grapher *dep.Grapher,
  51. targets []string,
  52. ) error {
  53. if len(targets) != 1 {
  54. return errors.New(gotext.Get("only one target is allowed"))
  55. }
  56. graph, err := grapher.GraphFromAURCache(ctx, nil, []string{targets[0]})
  57. if err != nil {
  58. return err
  59. }
  60. fmt.Fprintln(os.Stdout, graph.String())
  61. fmt.Fprintln(os.Stdout, "\nlayers map\n", graph.TopoSortedLayerMap(nil))
  62. return nil
  63. }