From 0702dccb7fade18af2892033b5a6df7ed6b13cd1 Mon Sep 17 00:00:00 2001 From: Zachary Wasserman Date: Thu, 15 Sep 2016 08:44:05 -0700 Subject: [PATCH] Only attempt to parse config file if it is specified by flag (#169) Previously, the behavior was to search for the config file in a variety of locations. Now we only attempt to load a config file if it has been explicitly specified with `-c` or `--config`. Fixes #165. --- cli/root.go | 2 +- config/config.go | 21 +++++++++------------ 2 files changed, 10 insertions(+), 13 deletions(-) diff --git a/cli/root.go b/cli/root.go index 567db37c4d..9d8d47c881 100644 --- a/cli/root.go +++ b/cli/root.go @@ -46,7 +46,7 @@ wish to override the default value. `, } - rootCmd.PersistentFlags().String("config", "", "Path to a configuration file") + rootCmd.PersistentFlags().StringP("config", "c", "", "Path to a configuration file") return rootCmd } diff --git a/config/config.go b/config/config.go index 85e04cc363..1a3a31b16e 100644 --- a/config/config.go +++ b/config/config.go @@ -323,19 +323,17 @@ func (man Manager) getConfigDuration(key string) time.Duration { // loadConfigFile handles the loading of the config file. func (man Manager) loadConfigFile() { - configFile := man.command.PersistentFlags().Lookup("config").Value.String() - if configFile != "" { - man.viper.SetConfigFile(configFile) - } else { - man.viper.SetConfigName("kolide") - man.viper.AddConfigPath(".") - man.viper.AddConfigPath("$HOME") - man.viper.AddConfigPath("./tools/app") - man.viper.AddConfigPath("/etc/kolide") - } - man.viper.SetConfigType("yaml") + configFile := man.command.PersistentFlags().Lookup("config").Value.String() + + if configFile == "" { + // No config file set, only use configs from env + // vars/flags/defaults + return + } + + man.viper.SetConfigFile(configFile) err := man.viper.ReadInConfig() fmt.Println("Using config file: ", man.viper.ConfigFileUsed()) @@ -343,7 +341,6 @@ func (man Manager) loadConfigFile() { if err != nil { panic("Error reading config: " + err.Error()) } - } // TestConfig returns a barebones configuration suitable for use in tests.