diff --git a/cli/cmd/root.go b/cli/cmd/root.go index d14c54acf..39729b6f5 100644 --- a/cli/cmd/root.go +++ b/cli/cmd/root.go @@ -10,6 +10,7 @@ import ( "github.com/up9inc/mizu/cli/mizu/fsUtils" "github.com/up9inc/mizu/cli/mizu/version" "github.com/up9inc/mizu/cli/uiUtils" + "time" ) var rootCmd = &cobra.Command{ @@ -34,9 +35,12 @@ func init() { } func printNewVersionIfNeeded(versionChan chan string) { - versionMsg := <-versionChan - if versionMsg != "" { - logger.Log.Infof(uiUtils.Yellow, versionMsg) + select { + case versionMsg := <-versionChan: + if versionMsg != "" { + logger.Log.Infof(uiUtils.Yellow, versionMsg) + } + case <-time.After(2 * time.Second): } } diff --git a/cli/config/config.go b/cli/config/config.go index 5b0032f6f..b75e79cb8 100644 --- a/cli/config/config.go +++ b/cli/config/config.go @@ -40,8 +40,7 @@ func InitConfig(cmd *cobra.Command) error { configFilePathFlag := cmd.Flags().Lookup(ConfigFilePathCommandName) configFilePath := configFilePathFlag.Value.String() if err := mergeConfigFile(configFilePath); err != nil { - _, isPathError := err.(*os.PathError) - if configFilePathFlag.Changed || !isPathError { + if configFilePathFlag.Changed || !os.IsNotExist(err) { return fmt.Errorf("invalid config, %w\n"+ "you can regenerate the file by removing it (%v) and using `mizu config -r`", err, configFilePath) } diff --git a/cli/mizu/version/versionCheck.go b/cli/mizu/version/versionCheck.go index f9f4d2fc5..2c662b2cb 100644 --- a/cli/mizu/version/versionCheck.go +++ b/cli/mizu/version/versionCheck.go @@ -37,6 +37,7 @@ func CheckNewerVersion(versionChan chan string) { latestRelease, _, err := client.Repositories.GetLatestRelease(context.Background(), "up9inc", "mizu") if err != nil { logger.Log.Debugf("[ERROR] Failed to get latest release") + versionChan <- "" return } @@ -49,12 +50,14 @@ func CheckNewerVersion(versionChan chan string) { } if versionFileUrl == "" { logger.Log.Debugf("[ERROR] Version file not found in the latest release") + versionChan <- "" return } res, err := http.Get(versionFileUrl) if err != nil { logger.Log.Debugf("[ERROR] Failed to get the version file %v", err) + versionChan <- "" return } @@ -62,6 +65,7 @@ func CheckNewerVersion(versionChan chan string) { res.Body.Close() if err != nil { logger.Log.Debugf("[ERROR] Failed to read the version file -> %v", err) + versionChan <- "" return } gitHubVersion := string(data) @@ -73,6 +77,7 @@ func CheckNewerVersion(versionChan chan string) { if gitHubVersionSemVer.GreaterThan(currentSemVer) { versionChan <- fmt.Sprintf("Update available! %v -> %v (%v)", mizu.SemVer, gitHubVersion, *latestRelease.HTMLURL) + } else { + versionChan <- "" } - versionChan <- "" }