# conflib *yet another configuration library* conflib is a small library to load configuration from environment variables or disk. Desired configuration is defined in a struct, then populated from a list of potential files, as well as environment variables. Let's look at example usage: ```go package main import ( "log" "git.janky.solutions/finn/conflib" ) type Config struct { Sample string `env:"SAMP"` MyExample int `default:"9"` Nested NestedConfig } type NestedConfig struct { SomeVariable string } func main() { config, err := conflib.Load[Config]("/etc/myapp.json", "myapp.json") if err != nil { log.Fatal(err) } log.Println("loaded config: ", config) } ``` This will attempt to read `/etc/myapp.json` and `myapp.json` and unmarshal them into a `Config` struct. It will also check for environment variables that match the struct field names, unless overwridden. So the `Sample` field will be populated from the `SAMP` environment variable due to the `env` tag on that field. `config.MyExample` will be populated from environment variable `MY_EXAMPLE`, and `config.Nested.SomeVariable` will be populated by environment variable `NESTED_SOME_VARIABLE`. If none of the listed files are found and no environment variables match any field, an error will be returned.