Skip to content

Commit 13fd016

Browse files
committed
internal/play: add goprevplay, load versions from back ends
This will let us have "Go 1.17" in the dropdown on go.dev/play. And when the next release happens and goprevplay and play are updated, the versions will update automatically in the UI. Change-Id: Id76f89767c3a91a2c9e27c9fbdad5d6fd9674ab2 Reviewed-on: https://go-review.googlesource.com/c/website/+/393840 Trust: Russ Cox <[email protected]> Run-TryBot: Russ Cox <[email protected]> TryBot-Result: Gopher Robot <[email protected]> Reviewed-by: Robert Findley <[email protected]>
1 parent 7b9aa99 commit 13fd016

File tree

1 file changed

+26
-15
lines changed

1 file changed

+26
-15
lines changed

internal/play/play.go

Lines changed: 26 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ func init() {
5252
// Default set until we get the full list from play.golang.org.
5353
playVersions.Store([]playVersion{
5454
{Name: "Go release", Backend: ""},
55+
{Name: "Go previous release", Backend: "goprev"},
5556
{Name: "Go dev branch", Backend: "gotip"},
5657
})
5758

@@ -69,22 +70,32 @@ func readVersions() (list []playVersion, err error) {
6970
client := &http.Client{
7071
Timeout: 2 * time.Minute,
7172
}
72-
resp, err := client.Get("https://play.golang.org/versions")
73-
if err != nil {
74-
return nil, fmt.Errorf("readVersions: %v", err)
75-
}
76-
defer resp.Body.Close()
77-
78-
js, err := io.ReadAll(resp.Body)
79-
if err != nil {
80-
return nil, fmt.Errorf("readVersions: %v", err)
81-
}
82-
if resp.StatusCode != 200 {
83-
return nil, fmt.Errorf("readVersions: %s\n%s", resp.Status, js)
84-
}
8573

86-
if err := json.Unmarshal(js, &list); err != nil || len(list) < 2 {
87-
return nil, fmt.Errorf("readVersions: bad response: %#q", js)
74+
list = append([]playVersion(nil), playVersions.Load().([]playVersion)...)
75+
for i, v := range list {
76+
resp, err := client.Get("https://" + v.Backend + "play.golang.org/version")
77+
if err != nil {
78+
log.Printf("readVersions: %v", err)
79+
continue
80+
}
81+
js, err := io.ReadAll(resp.Body)
82+
resp.Body.Close()
83+
if err != nil {
84+
log.Printf("readVersions: %v", err)
85+
continue
86+
}
87+
if resp.StatusCode != 200 {
88+
log.Printf("readVersions: %s\n%s", resp.Status, js)
89+
continue
90+
}
91+
var data struct{ Name string }
92+
if err := json.Unmarshal(js, &data); err != nil {
93+
log.Printf("readVersions: %v", err)
94+
continue
95+
}
96+
if data.Name != "" {
97+
list[i].Name = data.Name
98+
}
8899
}
89100
return list, nil
90101
}

0 commit comments

Comments
 (0)