proxy.go 804 B

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. package migrate
  2. import (
  3. "net/url"
  4. "os"
  5. "strings"
  6. "github.com/tal-tech/go-zero/core/stringx"
  7. "github.com/tal-tech/go-zero/tools/goctl/rpc/execx"
  8. )
  9. var defaultProxy = "https://goproxy.cn"
  10. var defaultProxies = []string{defaultProxy}
  11. func goProxy() []string {
  12. wd, err := os.Getwd()
  13. if err != nil {
  14. return defaultProxies
  15. }
  16. proxy, err := execx.Run("go env GOPROXY", wd)
  17. if err != nil {
  18. return defaultProxies
  19. }
  20. list := strings.FieldsFunc(proxy, func(r rune) bool {
  21. return r == '|' || r == ','
  22. })
  23. var ret []string
  24. for _, item := range list {
  25. if len(item) == 0 {
  26. continue
  27. }
  28. _, err = url.Parse(item)
  29. if err == nil && !stringx.Contains(ret, item) {
  30. ret = append(ret, item)
  31. }
  32. }
  33. if !stringx.Contains(ret, defaultProxy) {
  34. ret = append(ret, defaultProxy)
  35. }
  36. return ret
  37. }