From 69fa4a80c520ee57bd9941786800887ccd7f12a4 Mon Sep 17 00:00:00 2001 From: Maidul Islam Date: Mon, 8 May 2023 16:43:28 -0400 Subject: [PATCH] update check for CLI update --- cli/packages/cmd/root.go | 4 ++- cli/packages/util/check-for-update.go | 37 +++++++++++++++------------ 2 files changed, 23 insertions(+), 18 deletions(-) diff --git a/cli/packages/cmd/root.go b/cli/packages/cmd/root.go index ac827feb3d..92ad430255 100644 --- a/cli/packages/cmd/root.go +++ b/cli/packages/cmd/root.go @@ -34,7 +34,9 @@ func init() { rootCmd.PersistentFlags().BoolVarP(&debugLogging, "debug", "d", false, "Enable verbose logging") rootCmd.PersistentFlags().StringVar(&config.INFISICAL_URL, "domain", util.INFISICAL_DEFAULT_API_URL, "Point the CLI to your own backend [can also set via environment variable name: INFISICAL_API_URL]") rootCmd.PersistentPreRun = func(cmd *cobra.Command, args []string) { - util.CheckForUpdate() + if !util.IsRunningInDocker() { + util.CheckForUpdate() + } } // if config.INFISICAL_URL is set to the default value, check if INFISICAL_URL is set in the environment diff --git a/cli/packages/util/check-for-update.go b/cli/packages/util/check-for-update.go index 53eb6dfb75..dd50454c53 100644 --- a/cli/packages/util/check-for-update.go +++ b/cli/packages/util/check-for-update.go @@ -5,6 +5,7 @@ import ( "errors" "fmt" "io" + "io/ioutil" "net/http" "os" "os/exec" @@ -51,7 +52,7 @@ func CheckForUpdate() { } func getLatestTag(repoOwner string, repoName string) (string, error) { - url := fmt.Sprintf("https://api.github.com/repos/%s/%s/tags", repoOwner, repoName) + url := fmt.Sprintf("https://api.github.com/repos/%s/%s/releases/latest", repoOwner, repoName) resp, err := http.Get(url) if err != nil { return "", err @@ -67,29 +68,18 @@ func getLatestTag(repoOwner string, repoName string) (string, error) { return "", err } - var tags []struct { - Name string `json:"name"` + var releaseTag struct { + TagName string `json:"tag_name"` } - if err := json.Unmarshal(body, &tags); err != nil { + if err := json.Unmarshal(body, &releaseTag); err != nil { return "", fmt.Errorf("failed to unmarshal github response: %w", err) } - // Filter tags with prefix "infisical-cli/" - prefix := "infisical-cli/v" - var validTags []string - for _, tag := range tags { - if strings.HasPrefix(tag.Name, prefix) { - validTags = append(validTags, tag.Name) - } - } - - if len(validTags) == 0 { - return "", errors.New("no tags for the CLI is found") - } + tag_prefix := "infisical-cli/v" // Extract the version from the first valid tag - version := strings.TrimPrefix(validTags[0], prefix) + version := strings.TrimPrefix(releaseTag.TagName, tag_prefix) return version, nil } @@ -143,3 +133,16 @@ func getLinuxPackageManager() string { return "" } + +func IsRunningInDocker() bool { + if _, err := os.Stat("/.dockerenv"); err == nil { + return true + } + + cgroup, err := ioutil.ReadFile("/proc/self/cgroup") + if err != nil { + return false + } + + return strings.Contains(string(cgroup), "docker") +}