Skip to content

Commit 906e911

Browse files
authored
Support gazelle in bzlmod (#46)
1 parent c998fbb commit 906e911

5 files changed

Lines changed: 47 additions & 19 deletions

File tree

MODULE.bazel

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,21 +15,35 @@
1515
"Bazel module definition for bzlmod"
1616
module(
1717
name = "rules_buf",
18-
version = "0.0.0", # Replaced when publishing
18+
version = "0.0.0", # Replaced when publishing
1919
compatibility_level = 1,
2020
)
2121

2222
bazel_dep(name = "platforms", version = "0.0.4")
23+
2324
# Only needed because rules_proto doesn't provide the protoc toolchain yet.
2425
# TODO: remove in the future
2526
bazel_dep(name = "protobuf", version = "21.7", repo_name = "com_google_protobuf")
2627
bazel_dep(name = "rules_proto", version = "5.3.0-21.7")
2728

29+
bazel_dep(name = "rules_go", version = "0.42.0", repo_name = "io_bazel_rules_go")
30+
bazel_dep(name = "bazel_skylib", version = "1.5.0")
31+
2832
# We depend on gazelle at runtime to generate our proto_library rules
29-
bazel_dep(name = "gazelle", version = "0.33.0")
33+
bazel_dep(name = "gazelle", version = "0.34.0", repo_name = "bazel_gazelle")
34+
35+
go_deps = use_extension("@bazel_gazelle//:extensions.bzl", "go_deps")
36+
go_deps.from_file(go_mod = "//:go.mod")
37+
38+
use_repo(
39+
go_deps,
40+
"com_github_bazelbuild_buildtools",
41+
"com_github_stretchr_testify",
42+
"in_gopkg_yaml_v3",
43+
)
3044

3145
# ... and then reach inside to get the gazelle binary from this repository
32-
non_module_deps = use_extension("@gazelle//internal/bzlmod:non_module_deps.bzl", "non_module_deps")
46+
non_module_deps = use_extension("@bazel_gazelle//internal/bzlmod:non_module_deps.bzl", "non_module_deps")
3347
use_repo(non_module_deps, "bazel_gazelle_go_repository_tools")
3448

3549
ext = use_extension("//buf:extensions.bzl", "buf")

buf/BUILD.bazel

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,8 @@ bzl_library(
2222
deps = [
2323
"//buf/internal:breaking",
2424
"//buf/internal:lint",
25-
"//buf/internal:repo",
2625
"//buf/internal:push",
26+
"//buf/internal:repo",
2727
],
2828
)
2929

buf/extensions.bzl

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,6 @@ def _extension_impl(module_ctx):
4141
# Iterate over the global modules registered either directly by the user
4242
# or transitively by some other bazel module they use.
4343
for mod in module_ctx.modules:
44-
4544
# collect all buf.dependency tags, group by name of resulting buf_dependencies repo
4645
for dependency in mod.tags.dependency:
4746
if dependency.name not in dependencies.keys():
@@ -58,7 +57,7 @@ def _extension_impl(module_ctx):
5857
if toolchains.name not in registrations.keys():
5958
registrations[toolchains.name] = []
6059
registrations[toolchains.name].append(toolchains.version)
61-
60+
6261
# Don't require that the user manually registers a toolchain
6362
if len(registrations) == 0:
6463
registrations = {_DEFAULT_TOOLCHAIN_NAME: [_DEFAULT_VERSION]}

examples/bzlmod/BUILD.bazel

Lines changed: 27 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -14,26 +14,40 @@
1414

1515
load("@rules_buf//buf:defs.bzl", "buf_lint_test")
1616
load("@rules_proto//proto:defs.bzl", "proto_library")
17+
load("@gazelle//:def.bzl", "gazelle", "gazelle_binary")
1718

18-
exports_files(["buf.yaml"], visibility = ["//visibility:public"])
19+
exports_files(
20+
["buf.yaml"],
21+
visibility = ["//visibility:public"],
22+
)
1923

20-
proto_library(
21-
name = "unused",
22-
srcs = ["unused.proto"],
24+
gazelle(
25+
name = "gazelle",
26+
gazelle = ":gazelle-buf",
27+
)
28+
29+
gazelle_binary(
30+
name = "gazelle-buf",
31+
languages = [
32+
"@gazelle//language/proto", # Built-in rule from gazelle for Protos.
33+
# Any languages that depend on Gazelle's proto plugin must come after it.
34+
"@rules_buf//gazelle/buf:buf", # Loads the Buf extension
35+
],
36+
visibility = ["//visibility:public"],
2337
)
2438

2539
proto_library(
26-
name = "foo_proto",
27-
srcs = ["file.proto"],
28-
deps = [
29-
# imports "validate/validate.proto"
30-
"@buf_deps//validate:validate_proto",
31-
":unused",
40+
name = "root_proto",
41+
srcs = [
42+
"file.proto",
43+
"unused.proto",
3244
],
45+
visibility = ["//visibility:public"],
46+
deps = ["@buf_deps//validate:validate_proto"],
3347
)
3448

3549
buf_lint_test(
36-
name = "foo_proto_lint",
37-
targets = [":foo_proto"],
38-
config = "buf.yaml",
50+
name = "root_proto_lint",
51+
config = "//:buf.yaml",
52+
targets = [":root_proto"],
3953
)

examples/bzlmod/MODULE.bazel

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414

1515
"Bazel dependencies"
1616
bazel_dep(name = "rules_buf", dev_dependency = True, version = "0.0.0")
17+
bazel_dep(name = "gazelle", dev_dependency = True, version = "0.34.0")
1718

1819
local_path_override(
1920
module_name = "rules_buf",

0 commit comments

Comments
 (0)