main.go 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  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/metadata"
  10. "github.com/Jguer/yay/v11/pkg/settings"
  11. "github.com/Jguer/yay/v11/pkg/settings/parser"
  12. "github.com/Jguer/yay/v11/pkg/text"
  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.NewAURCache(filepath.Join(config.BuildDir, "aur.json"))
  34. if err != nil {
  35. return errors.Wrap(err, gotext.Get("failed to retrieve aur Cache"))
  36. }
  37. grapher := dep.NewGrapher(dbExecutor, aurCache, true, settings.NoConfirm, os.Stdout)
  38. return graphPackage(context.Background(), grapher, cmdArgs.Targets)
  39. }
  40. func main() {
  41. if err := handleCmd(); err != nil {
  42. text.Errorln(err)
  43. os.Exit(1)
  44. }
  45. }
  46. func graphPackage(
  47. ctx context.Context,
  48. grapher *dep.Grapher,
  49. targets []string,
  50. ) error {
  51. if len(targets) != 1 {
  52. return errors.New(gotext.Get("only one target is allowed"))
  53. }
  54. graph, err := grapher.GraphFromAURCache(ctx, nil, []string{targets[0]})
  55. if err != nil {
  56. return err
  57. }
  58. fmt.Fprintln(os.Stdout, graph.String())
  59. fmt.Fprintln(os.Stdout, graph.TopoSortedLayers())
  60. fmt.Fprintln(os.Stdout, graph.TopoSorted())
  61. return nil
  62. }