A simple go project for reading configuration files
- Read your configuration from a file
- Automatically resolve environment variables
- Custom name for config fields
- Add dependency
go get github.com/specialfish9/confuso
- Write your custom config struct, for example:
type Config struct {
Db Db
Http Http
}
type Db struct {
Host string
Port int
Username string
Password string
UseSsl bool `confuso:"use_ssl"`
}
type Http struct {
Hostname string `confuso:"website_hostname"`
Port int
}
- Write your matching config
# Database
Db.Host=${DB_HOSTNAME}
Db.Port=5432
Db.Username=admin
Db.Password=${DB_PASSWORD}
Db.use_ssl=true
# Http
Http.website_hostname=${HTTP_HOSTNAME}
Http.Port=${HTTP_PORT}
- Load it
var config = Config{}
err := confuso.LoadConf("myconf.whatev", &config)
if err != nil {
log.Fatal(err)
}
- Enjoy!
fmt.Printf("My website is: %s!\n", config.Http.Port)
You can integrate confuso
with the validator package.
type UserConfig struct {
Username string `validate:"min=3,max=40,regexp=^[a-zA-Z]*$"`
Name string `validate:"nonzero"`
Password string `validate:"min=8"`
}
var userConfig = UserConfig{}
err := confuso.LoadConf("myconf.whatev", &userConfig)
if err != nil {
log.Fatal(err)
}
if errs := validator.Validate(userConfig); errs != nil {
// values not valid, deal with errors here
}