bazelbuild / vscode-bazel

Bazel support for Visual Studio Code
https://marketplace.visualstudio.com/items?itemName=BazelBuild.vscode-bazel
Apache License 2.0
232 stars 76 forks source link

feat: Introduce `pickTarget` and `pickPackage` command variables #354

Closed vogelsgesang closed 3 months ago

vogelsgesang commented 4 months ago

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', ...).

vogelsgesang commented 3 months ago

@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 🙂

cameron-martin commented 3 months ago

I've been on holiday but I reckon I'll be able to take a look next week. The functionality does look useful though.

vogelsgesang commented 3 months ago

By the way: I think long-term it would make sense to also add support for cquery and parameters such as --experimental_explicit_aspects, --universe_scope, --infer_universe_scope, --noimplicit_deps. But I will leave that for a different commit.