Skip to content

Commit

Permalink
update-check: Improving 'update-check' output
Browse files Browse the repository at this point in the history
This commit
-modifies update-check to give platform specific update notification.

Signed-off-by: Deepika Joshi <[email protected]>
  • Loading branch information
Deepika Joshi authored and leseb committed Mar 11, 2019
1 parent 6764dc0 commit 60fccd8
Showing 1 changed file with 34 additions and 2 deletions.
36 changes: 34 additions & 2 deletions cmd/update-check.go
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ package cmd
import (
"fmt"
"log"
"runtime"
"strings"

"github.com/elgs/gojq"
Expand Down Expand Up @@ -73,10 +74,41 @@ func updateCheckNano(cmd *cobra.Command, args []string) {
fmt.Println("Latest version:", latestTag)

if latestTag != cnVersionNum {
latestTagURL, err := parser.Query("[0].html_url")
assets, err := parser.Query("[0].assets")
if err != nil {
log.Fatal(err)
}
fmt.Println("There is a newer version of cn available. Download it here:", latestTagURL)
findURL := true
latestTagString, ok := latestTag.(string)
if ok {
latestBuildURL, err := getLatestBuildURL(runtime.GOOS, runtime.GOARCH, latestTagString, assets)
if err == nil {
findURL = false
fmt.Printf("There is a newer version of cn available. Download it with:'curl -L %s -o cn && chmod +x cn && sudo mv cn /usr/local/bin/'\n", latestBuildURL)
}
}
if findURL {
latestTagURL, err := parser.Query("[0].html_url")
if err != nil {
log.Fatal(err)
}
fmt.Println("There is a newer version of cn available. Download it here:", latestTagURL)
}
}
}

func getLatestBuildURL(localOS string, localArch string, lastestTag string, assets interface{}) (string, error) {
assetsMap := assets.([]interface{})
requiredName := "cn-" + lastestTag + "-" + localOS + "-" + localArch
for key := range assetsMap {
name := assetsMap[key].(map[string]interface{})["name"]
browserDownloadURL := assetsMap[key].(map[string]interface{})["browser_download_url"]
if name == requiredName {
lastestBuildURL, ok := browserDownloadURL.(string)
if ok {
return lastestBuildURL, nil
}
}
}
return "", fmt.Errorf("Failed to fetch specific download url for %s OS with %s Architecture", localOS, localArch)
}

0 comments on commit 60fccd8

Please sign in to comment.