mirror of
https://github.com/kubescape/kubescape.git
synced 2026-03-05 03:00:25 +00:00
The io/ioutil package has been deprecated as of Go 1.16, see https://golang.org/doc/go1.16#ioutil. This commit replaces the existing io/ioutil functions with their new definitions in io and os packages. Signed-off-by: Eng Zer Jun <engzerjun@gmail.com>
50 lines
1.2 KiB
Go
50 lines
1.2 KiB
Go
package cmd
|
|
|
|
import (
|
|
"encoding/json"
|
|
"fmt"
|
|
"io"
|
|
"net/http"
|
|
|
|
"github.com/spf13/cobra"
|
|
)
|
|
|
|
var BuildNumber string
|
|
|
|
var versionCmd = &cobra.Command{
|
|
Use: "version",
|
|
Short: "Get current version",
|
|
Long: ``,
|
|
RunE: func(cmd *cobra.Command, args []string) error {
|
|
fmt.Println("Your current version is: " + BuildNumber)
|
|
return nil
|
|
},
|
|
}
|
|
|
|
func GetLatestVersion() (string, error) {
|
|
latestVersion := "https://api.github.com/repos/armosec/kubescape/releases/latest"
|
|
resp, err := http.Get(latestVersion)
|
|
if err != nil {
|
|
return "", fmt.Errorf("failed to get latest releases from '%s', reason: %s", latestVersion, err.Error())
|
|
}
|
|
defer resp.Body.Close()
|
|
if resp.StatusCode < 200 || 301 < resp.StatusCode {
|
|
return "", fmt.Errorf("failed to download file, status code: %s", resp.Status)
|
|
}
|
|
|
|
body, err := io.ReadAll(resp.Body)
|
|
if err != nil {
|
|
return "", fmt.Errorf("failed to read response body from '%s', reason: %s", latestVersion, err.Error())
|
|
}
|
|
var data map[string]interface{}
|
|
err = json.Unmarshal(body, &data)
|
|
if err != nil {
|
|
return "", fmt.Errorf("failed to unmarshal response body from '%s', reason: %s", latestVersion, err.Error())
|
|
}
|
|
return fmt.Sprintf("%v", data["tag_name"]), nil
|
|
}
|
|
|
|
func init() {
|
|
rootCmd.AddCommand(versionCmd)
|
|
}
|