Issue Description
At config load time, extract everything from viper into a ConfigData instance and save that as a field of Config. Retrieval functions will work with that instead of viper directly. We can still keep a reference to viper around and eventually implement config watching, in which case it would validate the data and replace c.configData on change. That would eliminate things like repeated URL parsing.
While centralizing this, move any provider specific flags from their cmd to their NewConfig so that they're all in one common place and can be captured with LoadConfig tests.
This applies to all cmds, coordinator, and providers.
Issue Description
At config load time, extract everything from viper into a ConfigData instance and save that as a field of Config. Retrieval functions will work with that instead of viper directly. We can still keep a reference to viper around and eventually implement config watching, in which case it would validate the data and replace
c.configDataon change. That would eliminate things like repeated URL parsing.While centralizing this, move any provider specific flags from their cmd to their
NewConfigso that they're all in one common place and can be captured withLoadConfigtests.This applies to all cmds, coordinator, and providers.