Skip to content

Commit 92f9c2c

Browse files
authored
Merge pull request #9 from algorandfoundation/feat/check-updates
feat: check for updates from github
2 parents 5107ad3 + 5be4c9f commit 92f9c2c

File tree

2 files changed

+41
-0
lines changed

2 files changed

+41
-0
lines changed

internal/github.go

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
package internal
2+
3+
import (
4+
"encoding/json"
5+
"log"
6+
"net/http"
7+
"strings"
8+
)
9+
10+
func GetGoAlgorandRelease(channel string) (*string, error) {
11+
resp, err := http.Get("https://api.github.com/repos/algorand/go-algorand/releases")
12+
if err != nil {
13+
return nil, err
14+
}
15+
16+
defer resp.Body.Close()
17+
var versions []map[string]interface{}
18+
if err := json.NewDecoder(resp.Body).Decode(&versions); err != nil {
19+
log.Fatal("ooopsss! an error occurred, please try again")
20+
}
21+
var versionResponse *string
22+
for i := range versions {
23+
tn := versions[i]["tag_name"].(string)
24+
if strings.Contains(tn, channel) {
25+
versionResponse = &tn
26+
break
27+
}
28+
29+
}
30+
31+
return versionResponse, nil
32+
}

internal/status.go

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,15 @@ func (m *StatusModel) Fetch(ctx context.Context, client *api.ClientWithResponses
4545
}
4646
m.Network = v.JSON200.GenesisId
4747
m.Version = fmt.Sprintf("v%d.%d.%d-%s", v.JSON200.Build.Major, v.JSON200.Build.Minor, v.JSON200.Build.BuildNumber, v.JSON200.Build.Channel)
48+
currentRelease, err := GetGoAlgorandRelease(v.JSON200.Build.Channel)
49+
if err != nil {
50+
return err
51+
}
52+
if currentRelease != nil && m.Version != *currentRelease {
53+
m.NeedsUpdate = true
54+
} else {
55+
m.NeedsUpdate = false
56+
}
4857
}
4958

5059
s, err := client.GetStatusWithResponse(ctx)

0 commit comments

Comments
 (0)