mirror of
https://github.com/awatertrevi/infisical.git
synced 2026-09-22 13:39:35 +00:00
47 lines
973 B
Go
47 lines
973 B
Go
package util
|
|
|
|
import (
|
|
"encoding/json"
|
|
"errors"
|
|
"fmt"
|
|
"io/ioutil"
|
|
"net/http"
|
|
)
|
|
|
|
func CheckForUpdate() {
|
|
latestVersion, err := getLatestTag("Infisical", "infisical")
|
|
if err != nil {
|
|
// do nothing and continue
|
|
return
|
|
}
|
|
if latestVersion != CLI_VERSION {
|
|
PrintWarning(fmt.Sprintf("Please update your CLI. You are running version %s but the latest version is %s", CLI_VERSION, latestVersion))
|
|
}
|
|
}
|
|
|
|
func getLatestTag(repoOwner string, repoName string) (string, error) {
|
|
url := fmt.Sprintf("https://api.github.com/repos/%s/%s/tags", repoOwner, repoName)
|
|
resp, err := http.Get(url)
|
|
if err != nil {
|
|
return "", err
|
|
}
|
|
if resp.StatusCode != 200 {
|
|
return "", errors.New(fmt.Sprintf("GitHub API returned status code %d", resp.StatusCode))
|
|
}
|
|
|
|
defer resp.Body.Close()
|
|
|
|
body, err := ioutil.ReadAll(resp.Body)
|
|
if err != nil {
|
|
return "", err
|
|
}
|
|
|
|
var tags []struct {
|
|
Name string `json:"name"`
|
|
}
|
|
|
|
json.Unmarshal(body, &tags)
|
|
|
|
return tags[0].Name[1:], nil
|
|
}
|