-
Notifications
You must be signed in to change notification settings - Fork 578
Closed
Description
- Related: feat: Config generator #2699
@Rexbeast2 has done a nice job of giving us an initial config generator in the recently-merged #2699.
Right now, it relies on a pre-populated list of config options to fit into the text, and I'm a bit worried that we'll wind up with it going out of date as new config options are added or changed.
There's a few possible ways to handle this:
- Being really careful during code review to remind people to add new configs to the generator
- Scripts or linters to spit out some sort of warning if a config option is added and it's not in the generator
- Changing the config generator to iterate through all of our config options
Since I'm not particularly perfect about remembering things I don't think option 1 is viable long-term. I think option 3 is probably the best, maybe supplemented with options 1 & 2 to make sure any additional help text/description needed for the config file is added.
I'm not sure what the best way to handle this would be but here's some ideas:
- Our config options are basically the same as our command-line options, so you should be able to iterate through those and print each one. I think they're all in ArgumentParser and start getting added here: https://github.com/intel/cve-bin-tool/blob/main/cve_bin_tool/cli.py#L96
- They're already set up in groups and have help text but we might need different text to make more sense in a config file context. You'd have to sort of look through the current static configs and see if there's an elegant way to handle these. Maybe have config_generator maintain its own list of config help strings and add them with each, similar to what we're doing now but with a less static template?
- Some options in the CLI may not make sense as config options (e.g. there's no
--helpin a config file and probably --version isn't a config you need either) so you might have to figure out how to drop those CLI flags when figuring the rest out.
Metadata
Metadata
Assignees
Labels
No labels