utils.go 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. package main
  2. import (
  3. "fmt"
  4. )
  5. const gitEmptyTree = "4b825dc642cb6eb9a060e54bf8d69288fbee4904"
  6. type intRange struct {
  7. min int
  8. max int
  9. }
  10. func makeIntRange(min, max int) intRange {
  11. return intRange{
  12. min,
  13. max,
  14. }
  15. }
  16. func (r intRange) get(n int) bool {
  17. return n >= r.min && n <= r.max
  18. }
  19. type intRanges []intRange
  20. func (rs intRanges) get(n int) bool {
  21. for _, r := range rs {
  22. if r.get(n) {
  23. return true
  24. }
  25. }
  26. return false
  27. }
  28. func min(a, b int) int {
  29. if a < b {
  30. return a
  31. }
  32. return b
  33. }
  34. func max(a, b int) int {
  35. if a < b {
  36. return b
  37. }
  38. return a
  39. }
  40. func stringSliceEqual(a, b []string) bool {
  41. if a == nil && b == nil {
  42. return true
  43. }
  44. if a == nil || b == nil {
  45. return false
  46. }
  47. if len(a) != len(b) {
  48. return false
  49. }
  50. for i := 0; i < len(a); i++ {
  51. if a[i] != b[i] {
  52. return false
  53. }
  54. }
  55. return true
  56. }
  57. func removeInvalidTargets(targets []string) []string {
  58. filteredTargets := make([]string, 0)
  59. for _, target := range targets {
  60. db, _ := splitDBFromName(target)
  61. if db == "aur" && mode == modeRepo {
  62. fmt.Printf("%s %s %s\n", bold(yellow(arrow)), cyan(target), bold("Can't use target with option --repo -- skipping"))
  63. continue
  64. }
  65. if db != "aur" && db != "" && mode == modeAUR {
  66. fmt.Printf("%s %s %s\n", bold(yellow(arrow)), cyan(target), bold("Can't use target with option --aur -- skipping"))
  67. continue
  68. }
  69. filteredTargets = append(filteredTargets, target)
  70. }
  71. return filteredTargets
  72. }