PackageManager just because
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

77 lines
1013 B

3 years ago
  1. package Filesystem
  2. import (
  3. "crypto/sha1"
  4. "regexp"
  5. "PackageManager/Variables"
  6. )
  7. var (
  8. sha1Hash = sha1.New()
  9. PruneRegex []*regexp.Regexp
  10. IgnoreRegex []*regexp.Regexp
  11. )
  12. func init() {
  13. var e error
  14. e = InitPruneRegex()
  15. if e != nil {
  16. panic(e)
  17. }
  18. e = InitIgnoreRegex()
  19. if e != nil {
  20. panic(e)
  21. }
  22. }
  23. func InitPruneRegex() error {
  24. var (
  25. r *regexp.Regexp
  26. s string
  27. e error
  28. )
  29. for _, s = range Variables.PruneRegexPaths {
  30. r, e = regexp.Compile(s)
  31. if e != nil {
  32. return e
  33. }
  34. PruneRegex = append(PruneRegex, r)
  35. }
  36. return nil
  37. }
  38. func InitIgnoreRegex() error {
  39. var (
  40. r *regexp.Regexp
  41. s string
  42. e error
  43. )
  44. for _, s = range Variables.IgnoreRegexPaths {
  45. r, e = regexp.Compile(s)
  46. if e != nil {
  47. return e
  48. }
  49. IgnoreRegex = append(IgnoreRegex, r)
  50. }
  51. return nil
  52. }
  53. func matchAny(p string, a []*regexp.Regexp) bool {
  54. var (
  55. regex *regexp.Regexp
  56. match bool
  57. )
  58. for _, regex = range a {
  59. match = regex.MatchString(p)
  60. if match == true {
  61. return true
  62. }
  63. }
  64. return false
  65. }