Currently there are separate config structs that are loaded in parallel rather than a single hierarchical struct. We also have various functions that load them individually as well as logic around processing the data. Move to a single hierarchical struct and pass that around to the various places that it needs to be. envconfig allows custom deserialization and processing as part of the struct with envconfig.Decode, encoding.TextUnmarshaler, and encoding.BinaryUnmarshaler. Switch to that rather than the hacky implementations that we implemented with standalone loading functions.
Currently there are separate config structs that are loaded in parallel rather than a single hierarchical struct. We also have various functions that load them individually as well as logic around processing the data. Move to a single hierarchical struct and pass that around to the various places that it needs to be. envconfig allows custom deserialization and processing as part of the struct with
envconfig.Decode,encoding.TextUnmarshaler, andencoding.BinaryUnmarshaler. Switch to that rather than the hacky implementations that we implemented with standalone loading functions.