Replace Viper as configuration manager #12
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Viper as a configuration manager has it's problems, see https://github.com/knadh/koanf?tab=readme-ov-file#alternative-to-viper for some discussion.
For our use-case it is especially relevant that Viper does not handle keys without content well (i.e. it ignores them). But for Beacon service without configuration is still significant - since we want to know the name of the service that should be monitored even if no config is provided (we just supply the default one). See:
It seems like we need different solutions. Alternatives:
Since we require somewhat special parsing anyway (dynamic content for the config file, we already parse
services
pretty much on our own) I think it would make sense to just create our own parser with https://github.com/go-yaml/yaml .config
seems like a clear choice but would shadow variables of this name.configurer
would help with this, but better name would be welcome.