diff --git a/cmd/root.go b/cmd/root.go index 9618b16e6..4a1305cad 100644 --- a/cmd/root.go +++ b/cmd/root.go @@ -346,7 +346,7 @@ func startPluginManager(ctx context.Context) func() error { // TODO: Implement some struct tags to map flags to viper func init() { cobra.OnInitialize(func() { - conf.InitConfig(cfgFile) + conf.InitConfig(cfgFile, true) }) rootCmd.PersistentFlags().StringVarP(&cfgFile, "configfile", "c", "", `config file (default "./navidrome.toml")`) diff --git a/conf/configuration.go b/conf/configuration.go index cca19945a..f6b1c4cb7 100644 --- a/conf/configuration.go +++ b/conf/configuration.go @@ -617,7 +617,7 @@ func init() { setViperDefaults() } -func InitConfig(cfgFile string) { +func InitConfig(cfgFile string, loadEnvVars bool) { codecRegistry := viper.NewCodecRegistry() _ = codecRegistry.RegisterCodec("ini", ini.Codec{ LoadOptions: ini.LoadOptions{ @@ -638,10 +638,12 @@ func InitConfig(cfgFile string) { } _ = viper.BindEnv("port") - viper.SetEnvPrefix("ND") - replacer := strings.NewReplacer(".", "_") - viper.SetEnvKeyReplacer(replacer) - viper.AutomaticEnv() + if loadEnvVars { + viper.SetEnvPrefix("ND") + replacer := strings.NewReplacer(".", "_") + viper.SetEnvKeyReplacer(replacer) + viper.AutomaticEnv() + } err := viper.ReadInConfig() if viper.ConfigFileUsed() != "" && err != nil { diff --git a/conf/configuration_test.go b/conf/configuration_test.go index 88454d204..15d12795e 100644 --- a/conf/configuration_test.go +++ b/conf/configuration_test.go @@ -31,7 +31,7 @@ var _ = Describe("Configuration", func() { filename := filepath.Join("testdata", "cfg."+format) // Initialize config with the test file - conf.InitConfig(filename) + conf.InitConfig(filename, false) // Load the configuration (with noConfigDump=true) conf.Load(true)