Start with just the Rust implementation.
Use case: For a feature with many imports, sometimes we want to know why an option has one value and not other from a particular import. To help debug, we want to know which feature set the last value for a key at a path.
Older notes:
Allow getting details such as getting which features set what and override each path.
Shows all steps applied by path. Don't need to show every path, just the highest level path (for non-objects). For objects, we do need to show when we're overriding only a specific key.
The tricky thing is that we merge in reverse from last feature to the first. So we would really be gathering what's been overridden as we iterate.
Gather overrode:
- feature (canonical feature name)
- json_path or json_pointer (whatever we already use the repo, maybe path is better since it work with jq)
Don't really need the value since it can be retrieved from that information
Start with just the Rust implementation.
Use case: For a feature with many imports, sometimes we want to know why an option has one value and not other from a particular import. To help debug, we want to know which feature set the last value for a key at a path.
Older notes:
Allow getting details such as getting which features set what and override each path.
Shows all steps applied by path. Don't need to show every path, just the highest level path (for non-objects). For objects, we do need to show when we're overriding only a specific key.
The tricky thing is that we merge in reverse from last feature to the first. So we would really be gathering what's been overridden as we iterate.
Gather overrode:
Don't really need the value since it can be retrieved from that information