From 417c436fe7b634109cbc15618a7645275f989294 Mon Sep 17 00:00:00 2001 From: nikitar020 Date: Wed, 2 Jan 2019 22:49:34 +0700 Subject: [PATCH] Fix the behavior of the -ignore-config command line flag --- config.go | 55 +++++++++++++++++++++++++++++++++++++++++-------------- 1 file changed, 41 insertions(+), 14 deletions(-) diff --git a/config.go b/config.go index 356660a..d5e2035 100644 --- a/config.go +++ b/config.go @@ -9,26 +9,33 @@ import ( "path/filepath" "github.com/liamg/aminal/config" "github.com/liamg/aminal/version" + "strings" ) +func isFlagProvided(flagName string) bool { + result := false + + flag.Visit(func(f *flag.Flag) { + result = strings.Compare(f.Name, flagName) == 0 + }) + + return result +} + func getConfig() *config.Config { - showVersion := false + ignoreConfig := false + shell := "" + debugMode := false + slomo := false + flag.BoolVar(&showVersion, "version", showVersion, "Output version information") + flag.BoolVar(&ignoreConfig, "ignore-config", ignoreConfig, "Ignore user config files and use defaults") + flag.StringVar(&shell, "shell", shell, "Specify the shell to use") + flag.BoolVar(&debugMode, "debug", debugMode, "Enable debug logging") + flag.BoolVar(&slomo, "slomo", slomo, "Render in slow motion (useful for debugging)") - ignore := false - flag.BoolVar(&ignore, "ignore-config", ignore, "Ignore user config files and use defaults") - if ignore { - return &config.DefaultConfig - } - - conf := loadConfigFile() - - flag.StringVar(&conf.Shell, "shell", conf.Shell, "Specify the shell to use") - flag.BoolVar(&conf.DebugMode, "debug", conf.DebugMode, "Enable debug logging") - flag.BoolVar(&conf.Slomo, "slomo", conf.Slomo, "Render in slow motion (useful for debugging)") - - flag.Parse() + flag.Parse() // actual parsing and fetching flags from the command line if showVersion { v := version.Version @@ -39,6 +46,26 @@ func getConfig() *config.Config { os.Exit(0) } + var conf *config.Config + if ignoreConfig { + conf = &config.DefaultConfig + } else { + conf = loadConfigFile() + } + + // Override values in the configuration file with the values specified in the command line, if any. + if isFlagProvided("shell") { + conf.Shell = shell + } + + if isFlagProvided("debug") { + conf.DebugMode = debugMode + } + + if isFlagProvided("slomo") { + conf.Slomo = slomo + } + return conf }