-
Notifications
You must be signed in to change notification settings - Fork 35
Add support for gazelle:resolve directives
#127
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
base: main
Are you sure you want to change the base?
Add support for gazelle:resolve directives
#127
Conversation
…ution Addresses bufbuild#117. Add support for `gazelle:resolve buf` directives in the buf gazelle plugin's `CrossResolve` function. This allows users to override the default `@buf_deps//` resolution for proto imports, enabling proper integration with `local_path_override` modules in bzlmod monorepos. The `CrossResolve` function now first checks for `gazelle:resolve buf` directives using the standard `resolve.FindRuleWithOverride` function. If a matching directive is found, return that label. Otherwise, fall back to the default `@buf_deps//` resolution. Example Usage ```python This directive goes in a BUILD file (typically root or parent directory) and tells gazelle to resolve imports of proto/foo/bar.proto to the label @com_example//proto/foo:bar_proto instead of the default @buf_deps//... resolution. ``` Test Coverage ``` bazel test //... ``` Co-Authored-By: Claude Opus 4.5 <[email protected]>
8792ded to
50c92e3
Compare
srikrsna-buf
left a comment
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.
Thank you! Left some minor style nits.
| bufConfig := GetConfigForGazelleConfig(gazelleConfig) | ||
| depRepo := getRepoNameForPath(bufConfig.BufConfigFile.Pkg) |
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.
| bufConfig := GetConfigForGazelleConfig(gazelleConfig) | |
| depRepo := getRepoNameForPath(bufConfig.BufConfigFile.Pkg) | |
| config := GetConfigForGazelleConfig(gazelleConfig) | |
| depRepo := getRepoNameForPath(config.BufConfigFile.Pkg) |
| } | ||
| config := GetConfigForGazelleConfig(gazelleConfig) | ||
| depRepo := getRepoNameForPath(config.BufConfigFile.Pkg) | ||
|
|
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.
| if override, ok := resolve.FindRuleWithOverride(gazelleConfig, bufImportSpec, "buf"); ok { | ||
| return []resolve.FindResult{{Label: override}} | ||
| } | ||
|
|
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.
gazelle:resolve directives
Addresses #117.
Add support for
gazelle:resolve bufdirectives in the buf gazelle plugin'sCrossResolvefunction. This allows users to override the default@buf_deps//resolution for proto imports, enabling proper integration withlocal_path_overridemodules in bzlmod monorepos.The
CrossResolvefunction now first checks forgazelle:resolve bufdirectives using the standardresolve.FindRuleWithOverridefunction. If a matching directive is found, return that label. Otherwise, fall back to the default@buf_deps//resolution.Example Usage
# gazelle:resolve buf proto/foo/bar.proto @com_example//proto/foo:bar_protoThis directive goes in a BUILD file (typically root or parent directory) and tells gazelle to resolve imports of proto/foo/bar.proto to the label @com_example//proto/foo:bar_proto instead of the default @buf_deps//... resolution.
Test Coverage
Additionally, in the repository cited in #117, this patch addresses one (of two) issues uncovered.