@@ -15,24 +15,51 @@ const (
1515type (
1616 logger interface {
1717 Debug (string , ... interface {})
18+ Error (string , ... interface {})
1819 }
1920)
2021
22+ // GetLatestVersion return the latest version of 0.x.x
23+ // versions >= 1.0.0 are not compitable with 0.3.x and not installed using brew installation
24+ // therefore, GetLatestVersion will return latest version in 0.x.x space
2125func GetLatestVersion (logger logger ) string {
22- version := DefaultVersion
26+ defaultversion := DefaultVersion
2327 client := github .NewClient (nil )
2428 releases , _ , err := client .Repositories .ListReleases (context .Background (), "codefresh-io" , "venona" , & github.ListOptions {})
2529 if err != nil {
26- logger .Debug ("Request to get latest version of venona been rejected , setting version to latest. Original error: %s" , err .Error ())
27- return version
30+ logger .Error ("Request to get latest version of venona been rejected , setting version to latest. Original error: %s" , err .Error ())
31+ return defaultversion
2832 }
2933 for _ , release := range releases {
34+ if release == nil {
35+ continue
36+ }
37+ if release .Draft == nil {
38+ continue
39+ }
40+ if * release .Draft {
41+ continue
42+ }
3043 name := strings .Split (* release .Name , "v" )
31- if len (name ) == 2 {
32- return name [1 ]
44+
45+ if len (name ) < 2 {
46+ continue
47+ }
48+ latestAllowed , err := version .NewVersion ("1.0.0" )
49+ if err != nil {
50+ logger .Error ("Failed to calc semver from version, setting version to latest. error: %s" , err .Error ())
51+ return DefaultVersion
52+ }
53+ current , err := version .NewVersion (name [1 ])
54+ if err != nil {
55+ logger .Error ("Failed to calc semver from version, setting version to latest. error: %s" , err .Error ())
56+ return DefaultVersion
57+ }
58+ if current .LessThan (latestAllowed ) {
59+ return current .String ()
3360 }
3461 }
35- return version
62+ return defaultversion
3663}
3764
3865func IsRunningLatestVersion () (bool , error ) {
0 commit comments