go get github.com/nextmillenniummedia/config-goint,[]intuint,[]uintstring,[]stringwith format:urlfloat,[]intbooltime.Durationwith format:ns,us,ms,s,m,h
required- This field is requiredfield- Field name for envsplitter- The char used to split the env valueenum- Enum of allowed valueformat- Format of value for other typesdoc- Addition info for errors or documentation
- If you described config like below
type Config struct {
Env string `config:"enum=local|dev|qa|stage|prod"`
Port int `config:"default=3000"`
Hosts []string `config:"format=url,required,splitter=|,doc='You doc info'"`
Enabled bool `config:"default=true"`
}- Than you call parsing envs variable to this config
inst := Config{}
settings := envs.SettingsEnv{
Prefix: "APPLICATION",
}
config.InitConfigEnvs(settings)
err := config.Process(&inst)In system has variables:
APPLICATION_ENV=prod
APPLICATION_PORT=3000
APPLICATION_HOSTS=http://domain1.com:5555/|http://domain2.com:5555
APPLICATION_ENABLED=true- Config should be equal:
Config{
Env: "prod",
Port: 3000,
Hosts: []{"http://domain1.com:5555", "http://domain2.com:5555"},
Enabled: true,
}- If in config has errors, than you may call method for visualize errors in terminal
if err != nil {
log.Fatal(err)
}- Errors will printed in terminal as md table
| error | env | format | doc | example |
|----------|-------------------|--------|--------------|--------------------------------------------|
| required | APPLICATION_HOSTS | url | You doc info | http://domain1:port1|http://domain2:port2 |- CamelToUnderscore converter for name fields
- ip format
- pointer
- tests for errors
- formatter and type matching
- export config to md table