version.go 935 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. package migrate
  2. import (
  3. "fmt"
  4. "io/ioutil"
  5. "net/http"
  6. "strings"
  7. "time"
  8. "github.com/zeromicro/go-zero/tools/goctl/util/console"
  9. )
  10. var client = http.Client{
  11. Timeout: 5 * time.Second,
  12. }
  13. func getLatest(repo string, verbose bool) ([]string, error) {
  14. proxies := goProxy()
  15. for _, proxy := range proxies {
  16. if verbose {
  17. console.Info("use go proxy %q", proxy)
  18. }
  19. log := func(err error) {
  20. console.Warning("get latest versions failed from proxy %q, error: %+v", proxy, err)
  21. }
  22. resp, err := client.Get(fmt.Sprintf("%s/%s/@v/list", proxy, repo))
  23. if err != nil {
  24. log(err)
  25. continue
  26. }
  27. if resp.StatusCode != http.StatusOK {
  28. log(fmt.Errorf("%s", resp.Status))
  29. continue
  30. }
  31. defer resp.Body.Close()
  32. data, err := ioutil.ReadAll(resp.Body)
  33. if err != nil {
  34. log(err)
  35. continue
  36. }
  37. versionStr := string(data)
  38. versions := strings.Fields(versionStr)
  39. return versions, nil
  40. }
  41. return []string{}, nil
  42. }