url_replacements.go 748 B

123456789101112131415161718192021222324252627282930313233343536373839
  1. package env
  2. import (
  3. "regexp"
  4. "strings"
  5. )
  6. // URLReplacement represents a URL replacement configuration
  7. type URLReplacement struct {
  8. Regexp *regexp.Regexp
  9. Replacement string
  10. }
  11. // URLReplacements parses URL replacements from the environment variable
  12. func URLReplacements(s *[]URLReplacement, desc Desc) error {
  13. value, ok := desc.Get()
  14. if !ok {
  15. return nil
  16. }
  17. ss := []URLReplacement(nil)
  18. keyvalues := strings.Split(value, ";")
  19. for _, keyvalue := range keyvalues {
  20. parts := strings.SplitN(keyvalue, "=", 2)
  21. if len(parts) != 2 {
  22. return desc.Errorf("invalid key/value: %s", keyvalue)
  23. }
  24. ss = append(ss, URLReplacement{
  25. Regexp: RegexpFromPattern(parts[0]),
  26. Replacement: parts[1],
  27. })
  28. }
  29. *s = ss
  30. return nil
  31. }