Remove function indirection for common options #552
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.
Problem
While working on a future feature, I found myself confused/uncertain around what the variety of common option functions were doing, and then later, how to separate them by dependency--I needed account API options and database paths, but no core API related changes.
The only way I could accomplish what I wanted was by duplicating options. Feels bad.
Solution
Organize the common option sets by dependency. Today, we effectively have 4 common option sets:
I'm very open to changing how these are organized/naming conventions so long as we're explicitly adding each option set for a given command.
Result
Commands can opt-in to specific dependency-based option sets when defining their command:
As part of this work, the following changes were implemented:
Testing
Ran the existing test suite.