actions.go 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. package main
  2. import (
  3. "fmt"
  4. "os"
  5. aur "github.com/jguer/yay/aur"
  6. pac "github.com/jguer/yay/pacman"
  7. "github.com/jguer/yay/util"
  8. )
  9. // Install handles package installs
  10. func Install(pkgs []string, flags []string) error {
  11. aurs, repos, _ := pac.PackageSlices(pkgs)
  12. err := pac.Install(repos, flags)
  13. if err != nil {
  14. fmt.Println("Error installing repo packages.")
  15. }
  16. q, n, err := aur.MultiInfo(aurs)
  17. if len(aurs) != n || err != nil {
  18. fmt.Println("Unable to get info on some packages")
  19. }
  20. var finalrm []string
  21. for _, aurpkg := range q {
  22. finalmdeps, err := aurpkg.Install(flags)
  23. finalrm = append(finalrm, finalmdeps...)
  24. if err != nil {
  25. fmt.Println("Error installing", aurpkg.Name, ":", err)
  26. }
  27. }
  28. if len(finalrm) != 0 {
  29. aur.RemoveMakeDeps(finalrm)
  30. }
  31. return nil
  32. }
  33. // Upgrade handles updating the cache and installing updates.
  34. func Upgrade(flags []string) error {
  35. errp := pac.UpdatePackages(flags)
  36. erra := aur.Upgrade(flags)
  37. if errp != nil {
  38. return errp
  39. }
  40. return erra
  41. }
  42. // CleanDependencies removels all dangling dependencies in system
  43. func CleanDependencies(pkgs []string) error {
  44. hanging, err := pac.HangingPackages()
  45. if err != nil {
  46. return err
  47. }
  48. if len(hanging) != 0 {
  49. if !util.ContinueTask("Confirm Removal?", "nN") {
  50. return nil
  51. }
  52. err = pac.CleanRemove(hanging)
  53. }
  54. return err
  55. }
  56. // GetPkgbuild gets the pkgbuild of the package 'pkg' trying the ABS first and then the AUR trying the ABS first and then the AUR.
  57. func GetPkgbuild(pkg string) (err error) {
  58. wd, err := os.Getwd()
  59. if err != nil {
  60. return
  61. }
  62. wd = wd + "/"
  63. err = pac.GetPkgbuild(pkg, wd)
  64. if err == nil {
  65. return
  66. }
  67. err = aur.GetPkgbuild(pkg, wd)
  68. return
  69. }