-
-
Notifications
You must be signed in to change notification settings - Fork 80
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
feat: Introduce pickTarget
and pickPackage
command variables
#354
feat: Introduce pickTarget
and pickPackage
command variables
#354
Conversation
@cameron-martin @jfirebaugh do you have time to review this? In case you currently don't have time to review in detail, I would appreciate high-level feedback whether you consider this functionality as valuable in general 🙂 |
I've been on holiday but I reckon I'll be able to take a look next week. The functionality does look useful though. |
d1c9a56
to
7cbb8b5
Compare
By the way: I think long-term it would make sense to also add support for |
pickTarget
and pickPackage
command variablespickTarget
and pickPackage
command variables
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Apart from the two other comments, looks good.
This commit introduces the `bazel.pickTarget` and `bazel.pickPackage` command variables. Those commands can be used from `tasks.json` and `launch.json` to prompt the user to select a Bazel target or package. The available choices are determined by a user-specified Bazel query. The implementation reuses the existing quick-pick functionality from `bazel_quickpick.ts`. The `wrapQuickPick` function parses the arguments passed from the `task.json` and then forwards to the existing quickpicks. Those utility functions were restructured as part of this commit: 1. The internal helpers `queryWorkspaceQuickPickPackages` and `queryWorkspaceQuickPickTargets` were inlined into `queryQuickPick{Packages,Targets}` as the internal helper functions got in the way of other changes, but didn't deduplicate any code as they only had one caller. 2. The `queryQuickPick{Packages,Targets}` take an object with named parameters now. 3. `queryQuickPickPackage` now also accepts a `query` parameter instead of using the `queryExpression`. Both `queryQuickPickPackages` and `queryQuickPickTargets` default to the query `//...` if no query string is provided by the caller. Point (3) also is a user-facing change. Commands like "Build package" and "Test package" now use `//...` instead of the configured `queryExpression`. This is in sync with other commands like "Test target" which uses the hardcoded query `kind('.*_test rule', ...)`.
7cbb8b5
to
1fc4fc4
Compare
This commit introduces the
bazel.pickTarget
andbazel.pickPackage
command variables. Those commands can be used fromtasks.json
andlaunch.json
to prompt the user to select a Bazel target or package. The available choices are determined by a user-specified Bazel query.The implementation reuses the existing quick-pick functionality from
bazel_quickpick.ts
. ThewrapQuickPick
function parses the arguments passed from thetask.json
and then forwards to the existing quickpicks.Those utility functions were restructured as part of this commit:
queryWorkspaceQuickPickPackages
andqueryWorkspaceQuickPickTargets
were inlined intoqueryQuickPick{Packages,Targets}
as the internal helper functions got in the way of other changes, but didn't deduplicate any code as they only had one caller.queryQuickPick{Packages,Targets}
take an object with named parameters now.queryQuickPickPackage
now also accepts aquery
parameter instead of using thequeryExpression
. BothqueryQuickPickPackages
andqueryQuickPickTargets
default to the query//...
if no query string is provided by the caller.Point (3) also is a user-facing change. Commands like "Build package" and "Test package" now use
//...
instead of the configuredqueryExpression
. This is in sync with other commands like "Test target" which uses the hardcoded querykind('.*_test rule', ...)
.