modulepackage
0.0.0-20240111125312-c3e33be987a0
Repository: https://github.com/fvbock/confobject.git
Documentation: pkg.go.dev
# README
ConfObject
Reloadable, validated configuration from many - sometimes uncontrollable - sources
Motivation
I had to deal with configuration values that came from a lot of different places and circumstances:
- a config file or env vars
- some json or yaml file - possibly stored in a db
- some of these i had control over - others could be modified by a user in an app that i do not necessarily must have access to to employ validation or control the way things are stored
I also needed:
- default values, "NOT NULL" like constraints, and validation that involves dependencies between different config values
- the ability to reload the configs from all its sources in its original order in an easy way
Features
Usage
Cfg := struct {
Config
BoolSetting bool `default:"true"`
StringSetting string `default:"foo" json:"string_setting"`
IntSetting int `required:"false" default:"23" should:"BeGreaterThanOrEqualTo_FloatSetting"`
FloatSetting float64 `default:"1.681"`
SingleValueConfig struct {
StringSetting string `default:"bar" json:"single_value_config__string_setting"`
IntSetting int `required:"false" default:"42" should:"BeGreaterThanOrEqualTo_.FloatSetting"`
FloatSetting float64 `should:"BeLessThanOrEqualTo_IntSetting"`
}
SliceConfig struct {
StringSliceSetting []string `default:"foo,bar"`
IntSliceSetting []int `default:"23,42"`
FloatSliceSetting []float64 `default:"1.394,1.112"`
}
NestedValueConfig struct {
StringSetting string `default:"NestedOuterFoo"`
InnerNestedValueConfig struct {
StringSetting string `default:"NestedInnerFoo"`
}
}
StringSet *set.StringSet `alias:someNameICantControl`
IntSet *set.IntSet
}{}
err = cobj.InitConfig(&Cfg, []cobj.InitFunc{
cobj.InitFunc{
F: loadConfFile,
ExitOnError: true,
},
cobj.InitFunc{
F: setupThisOtherThing,
ExitOnError: false,
},
}...)
func loadConfFile() (err error) {
conf := make(map[string]string)
...
err = Cfg.Set(conf)
return
}
Limitations
TODOs
- finish writing this file
- godoc
- clean up and extend the tests
Questions?
Ping me on twitter
# Packages
No description provided by the author
# Functions
No description provided by the author
No description provided by the author
No description provided by the author
# Constants
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
# Variables
No description provided by the author
# Type aliases
No description provided by the author