Skip to content

Commit 1ed9ba7

Browse files
fix get latest version (#852)
Signed-off-by: Mukundan Sundararajan <[email protected]>
1 parent f1c9ee2 commit 1ed9ba7

File tree

2 files changed

+81
-2
lines changed

2 files changed

+81
-2
lines changed

pkg/version/version.go

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ import (
2121
"os"
2222
"strings"
2323

24+
"github.com/hashicorp/go-version"
2425
yaml "gopkg.in/yaml.v2"
2526

2627
"github.com/dapr/cli/pkg/print"
@@ -110,13 +111,23 @@ func GetLatestReleaseGithub(githubURL string) (string, error) {
110111
return "", fmt.Errorf("no releases")
111112
}
112113

114+
defaultVersion, _ := version.NewVersion("0.0.0")
115+
latestVersion := defaultVersion
116+
113117
for _, release := range githubRepoReleases {
114118
if !strings.Contains(release.TagName, "-rc") {
115-
return strings.TrimPrefix(release.TagName, "v"), nil
119+
cur, _ := version.NewVersion(strings.TrimPrefix(release.TagName, "v"))
120+
if cur.GreaterThan(latestVersion) {
121+
latestVersion = cur
122+
}
116123
}
117124
}
118125

119-
return "", fmt.Errorf("no releases")
126+
if latestVersion.Equal(defaultVersion) {
127+
return "", fmt.Errorf("no releases")
128+
}
129+
130+
return latestVersion.String(), nil
120131
})
121132
}
122133

pkg/version/version_test.go

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,74 @@ func TestGetVersionsGithub(t *testing.T) {
6161
"",
6262
"1.2.2",
6363
},
64+
{
65+
"Only latest version is got",
66+
"/latest",
67+
`[
68+
{
69+
"url": "https://api.github.com/repos/dapr/dapr/releases/44766923",
70+
"html_url": "https://github.com/dapr/dapr/releases/tag/v1.4.4",
71+
"id": 44766926,
72+
"tag_name": "v1.4.4",
73+
"target_commitish": "master",
74+
"name": "Dapr Runtime v1.4.4",
75+
"draft": false,
76+
"prerelease": false
77+
},
78+
{
79+
"url": "https://api.github.com/repos/dapr/dapr/releases/44766923",
80+
"html_url": "https://github.com/dapr/dapr/releases/tag/v1.5.1",
81+
"id": 44766923,
82+
"tag_name": "v1.5.1",
83+
"target_commitish": "master",
84+
"name": "Dapr Runtime v1.5.1",
85+
"draft": false,
86+
"prerelease": false
87+
}
88+
]
89+
`,
90+
"",
91+
"1.5.1",
92+
},
93+
{
94+
"Only latest stable version is got",
95+
"/latest_stable",
96+
`[
97+
{
98+
"url": "https://api.github.com/repos/dapr/dapr/releases/44766923",
99+
"html_url": "https://github.com/dapr/dapr/releases/tag/v1.5.2-rc.1",
100+
"id": 44766926,
101+
"tag_name": "v1.5.2-rc.1",
102+
"target_commitish": "master",
103+
"name": "Dapr Runtime v1.5.2-rc.1",
104+
"draft": false,
105+
"prerelease": true
106+
},
107+
{
108+
"url": "https://api.github.com/repos/dapr/dapr/releases/44766923",
109+
"html_url": "https://github.com/dapr/dapr/releases/tag/v1.4.4",
110+
"id": 44766926,
111+
"tag_name": "v1.4.4",
112+
"target_commitish": "master",
113+
"name": "Dapr Runtime v1.4.4",
114+
"draft": false,
115+
"prerelease": false
116+
},
117+
{
118+
"url": "https://api.github.com/repos/dapr/dapr/releases/44766923",
119+
"html_url": "https://github.com/dapr/dapr/releases/tag/v1.5.1",
120+
"id": 44766923,
121+
"tag_name": "v1.5.1",
122+
"target_commitish": "master",
123+
"name": "Dapr Runtime v1.5.1",
124+
"draft": false,
125+
"prerelease": false
126+
}
127+
]
128+
`,
129+
"",
130+
"1.5.1",
131+
},
64132
{
65133
"Malformed JSON",
66134
"/malformed",

0 commit comments

Comments
 (0)