As of #131 both serde_yaml and yaml-rust are used to achieve proper unification of multiple configuration files. Ideally the unification would take place on a struct level instead of the input.
Benefits:
Removes dependency on second Yaml library
Enables us to use configs from different sources (e.g. generated at runtime or read from a different file format) that we are right now needlessly locked out of.
Requirements:
Read in possibly incomplete configs as structs
Merge two structs into one
Finalization method that validates that the resulting config includes all required fields.
Unification must be independent of source format
Unification must be done only once so a static config can be produced
Optional: Enable tracing config values back to their source for debugging (e.g. "Missing value name, sources: myapp.yaml, myapp.d/01_resume, myapp.d/02_remove_some_feature.yaml)
There are probably crates the fulfill all/some of these requirements with a derive macro already.
As of #131 both serde_yaml and yaml-rust are used to achieve proper unification of multiple configuration files. Ideally the unification would take place on a struct level instead of the input.
Benefits:
Requirements:
name
, sources: myapp.yaml, myapp.d/01_resume, myapp.d/02_remove_some_feature.yaml)There are probably crates the fulfill all/some of these requirements with a derive macro already.