fuzzyworld

template / commit

Fixed issue where a weird character appeared after CLI output.

f58f2e3594f75f06070369ebca3b19ec258c5355 · Pavel Safronov · 2023-01-29 20:01:11 -0800 · parents 5c6a534566ae

Fixed issue where a weird character appeared after CLI output.
Slight reformat of config loading code.
 main.go | 53 ++++++++++++++++++++++++++++++++++-------------------
 1 file changed, 34 insertions(+), 19 deletions(-)

diff --git a/main.go b/main.go
index d261eb5..82e9128 100644
--- a/main.go
+++ b/main.go
@@ -115,6 +115,7 @@ func main() {
 					for _, p := range config.Profiles {
 						fmt.Printf("  %v: %v\n", p.Name, p.Description)
 					}
+					fmt.Println()
 					return nil
 				},
 			},
@@ -145,6 +146,7 @@ func main() {
 					yamlText := writer.String()
 					fmt.Printf("Profile '%v':\n", settings.profile)
 					fmt.Println(yamlText)
+					fmt.Println()
 					return nil
 				},
 			},
@@ -163,6 +165,7 @@ func main() {
 					if err != nil {
 						return fmt.Errorf("error saving default config: %v", err)
 					}
+					fmt.Println()
 					return nil
 				},
 			},
@@ -170,7 +173,8 @@ func main() {
 				Name:  "version",
 				Usage: "print version",
 				Action: func(c *cli.Context) error {
-					fmt.Printf("Version: %v", Version)
+					fmt.Print(Version)
+					fmt.Println()
 					return nil
 				},
 			},
@@ -184,6 +188,7 @@ func main() {
 			if err != nil {
 				return fmt.Errorf("error in main logic: %w", err)
 			}
+			fmt.Println()
 			return nil
 		},
 	}
@@ -267,37 +272,47 @@ func createSettings(
 	fullConfigPath := getFullPath(settings.configFilePath, *usr)
 	settings.fullConfigPath = fullConfigPath
 
-	var config Config
+	var fullConfig Config
 	if settings.useDefaultConfig {
-		config = defaultConfig()
+		fullConfig = defaultConfig()
 	} else {
-		config, err = loadConfig(fullConfigPath)
+		config, err := loadConfig(fullConfigPath)
 		if err != nil {
 			return settings, fmt.Errorf("error loading config from %v: %w", fullConfigPath, err)
 		}
 		fmt.Printf("Loaded config from %v\n", fullConfigPath)
 
 		// load user config, if present
-		fullUserConfigPath := getFullPath(settings.userConfigPath, *usr)
-		_, err = os.Stat(fullUserConfigPath)
-		if err == nil {
-			userConfig, err := loadConfig(fullUserConfigPath)
-			if err != nil {
-				return settings, fmt.Errorf("error loading user config from %v: %w", fullUserConfigPath, err)
-			} else {
-				fmt.Printf("Loaded user config from %v, combining with global config\n", fullUserConfigPath)
-				config, err = mergeConfigs(config, userConfig)
-				if err != nil {
-					return settings, fmt.Errorf("error merging configs: %w", err)
-				}
-			}
-		}
+		fullConfig = loadAndMergeUserConfig(settings.userConfigPath, usr, config)
 	}
-	settings.config = config
+	settings.config = fullConfig
 
 	return settings, nil
 }
 
+func loadAndMergeUserConfig(userConfigPath string, usr *user.User, globalConfig Config) Config {
+	fullUserConfigPath := getFullPath(userConfigPath, *usr)
+	_, err := os.Stat(fullUserConfigPath)
+	if err != nil {
+		fmt.Printf("User config file not found at %v, skipping\n", fullUserConfigPath)
+		return globalConfig
+	}
+
+	userConfig, err := loadConfig(fullUserConfigPath)
+	if err != nil {
+		fmt.Printf("Error loading user config from %v: %v\n", fullUserConfigPath, err)
+		return globalConfig
+	}
+
+	fmt.Printf("Loaded user config from %v, combining with global config\n", fullUserConfigPath)
+	fullConfig, err := mergeConfigs(globalConfig, userConfig)
+	if err != nil {
+		fmt.Printf("Error merging configs: %v\n", err)
+	}
+
+	return fullConfig
+}
+
 func readEnvVars() (EnvVarValues, error) {
 	envVarValues := EnvVarValues{}