cps-org / cps-config

A drop in replacement for pkg-config/pkgconf using cps files
MIT License
15 stars 7 forks source link

Switch from cxxopts to CLI11 #77

Closed bretbrownjr closed 1 month ago

bretbrownjr commented 1 month ago

Change from using cxxopts for command-line parsing to using CLI11.

Use lambda passing syntax for non-trivial flag handling so as to put the declaration of the flag next to the implementation for that flag.

Use the CLI11 footer feature to move documentation for examples and support to the bottom of the help message.

Support more than one value for packages and components.

Closes #76.

bretbrownjr commented 1 month ago

Assuming this gets merged, I plan to follow up at some point with a PR to add subcommands to cps-config since CLI11 supports that. It would be more intuitive to end users to spell queries like cps-config cflags instead of cps-config --cflags. It would be appropriate to consider the support of that kind of enhancement in evaluating this design change, though I think the API stability alone is worth this PR.

It's also worth considering that CLI11 supports environment variables as well. Using those features might be attractive to this project compared to implementing our own logic to parse and document that support surface.

Of course, on the support for subcommends, the flag-oriented mode for relevant flags will need to be fully supported to function as a drop-in replacement for pkg-config.

bretbrownjr commented 1 month ago

@lunacd: You might want to review as well since you added the cxxopts logic.

dcbaker commented 1 month ago

I want to get to this, but it’s a very busy weekend for me so I probably won’t have time till Monday.