You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
package main
import (
"flag""fmt""github.com/spf13/pflag""github.com/spf13/viper"
)
funcmain() {
flag.String("source", "", "source of configuration")
pflag.CommandLine.AddGoFlagSet(flag.CommandLine)
pflag.Parse()
viper.BindPFlags(pflag.CommandLine)
viper.SetEnvPrefix("repro")
viper.BindEnv("source")
viper.SetDefault("source", "default")
viper.SetConfigName("config") // name of config file (without extension)viper.SetConfigType("yaml") // REQUIRED if the config file does not have the extension in the nameviper.AddConfigPath("/etc/repro/") // path to look for the config file inviper.AddConfigPath("$HOME/.config/repro") // call multiple times to add many search pathsviper.AddConfigPath(".") // optionally look for config in the working directoryerr:=viper.ReadInConfig() // Find and read the config fileiferr!=nil { // Handle errors reading the config fileif_, ok:=err.(viper.ConfigFileNotFoundError); !ok {
panic(fmt.Errorf("fatal error config file: %w", err))
}
}
fmt.Println("config source: ", viper.GetString("source"))
}
Expected Behavior
flag should override env
env should override all files
local directory should override user global
user global should override system config
system config should overide defaults
defaults should work
Actual Behavior
Configuration file locations are searched in order specified, which is sane and good, but the documentation suggests the opposite.
Steps To Reproduce
No response
Additional Information
Please reorder these lines.
viper.AddConfigPath("/etc/appname/") // path to look for the config file in
viper.AddConfigPath("$HOME/.appname") // call multiple times to add many search paths
viper.AddConfigPath(".") // optionally look for config in the working directory
Also, consider using "$HOME/.config/appname/" for the user directory one.
(Don't get me started on the single-dash long-args thing, I've given up on golang on that point.)
The text was updated successfully, but these errors were encountered:
A maintainer will take a look at your issue shortly. 👀
In the meantime: We are working on Viper v2 and we would love to hear your thoughts about what you like or don't like about Viper, so we can improve or fix those issues.
📣 If you've already given us your feedback, you can still help by spreading the news,
either by sharing the above link or telling people about this on Twitter:
Preflight Checklist
Viper Version
v1.18.2
Go Version
1.21.1
Config Source
Manual set
Format
YAML
Repl.it link
No response
Code reproducing the issue
Expected Behavior
Actual Behavior
Configuration file locations are searched in order specified, which is sane and good, but the documentation suggests the opposite.
Steps To Reproduce
No response
Additional Information
Please reorder these lines.
Also, consider using
"$HOME/.config/appname/"
for the user directory one.(Don't get me started on the single-dash long-args thing, I've given up on golang on that point.)
The text was updated successfully, but these errors were encountered: