Skip to content

Commit 8bff044

Browse files
authored
Merge branch 'add-ability-to-parse-build-bazel' into migrate-off-bazel
2 parents 569e299 + b59962a commit 8bff044

File tree

1 file changed

+103
-44
lines changed

1 file changed

+103
-44
lines changed

.generator/parse_googleapis_content.py

Lines changed: 103 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,103 @@
1+
# Copyright 2025 Google LLC
2+
#
3+
# Licensed under the Apache License, Version 2.0 (the "License");
4+
# you may not use this file except in compliance with the License.
5+
# You may obtain a copy of the License at
6+
#
7+
# http://www.apache.org/licenses/LICENSE-2.0
8+
#
9+
# Unless required by applicable law or agreed to in writing, software
10+
# distributed under the License is distributed on an "AS IS" BASIS,
11+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12+
# See the License for the specific language governing permissions and
13+
# limitations under the License.
14+
115
import starlark as sl
216

317

18+
_PY_CALLABLES = (
19+
"py_gapic_assembly_pkg",
20+
"py_gapic_library",
21+
"py_test",
22+
"py_proto_library",
23+
"py_grpc_library",
24+
"py_import",
25+
)
26+
27+
_JAVA_CALLABLES = (
28+
"java_gapic_assembly_gradle_pkg",
29+
"java_gapic_library",
30+
"java_gapic_test",
31+
"java_grpc_library",
32+
"java_proto_library",
33+
)
34+
35+
_GO_CALLABLES = (
36+
"go_gapic_assembly_pkg",
37+
"go_gapic_library",
38+
"go_proto_library",
39+
"go_grpc_library",
40+
)
41+
42+
_PHP_CALLABLES = (
43+
"php_gapic_assembly_pkg",
44+
"php_gapic_library",
45+
"php_grpc_library",
46+
"php_proto_library",
47+
)
48+
49+
_NODEJS_CALLABLES = ("nodejs_gapic_assembly_pkg", "nodejs_gapic_library")
50+
51+
_RUBY_CALLABLES = (
52+
"ruby_ads_gapic_library",
53+
"ruby_cloud_gapic_library",
54+
"ruby_gapic_assembly_pkg",
55+
"ruby_grpc_library",
56+
"ruby_proto_library",
57+
)
58+
59+
_CSHARP_CALLABLES = (
60+
"csharp_gapic_assembly_pkg",
61+
"csharp_gapic_library",
62+
"csharp_grpc_library",
63+
"csharp_proto_library",
64+
)
65+
66+
_CC_CALLABLES = ("cc_grpc_library", "cc_gapic_library", "cc_proto_library")
67+
68+
_MISC_CALLABLES = (
69+
"moved_proto_library",
70+
"proto_library",
71+
"proto_library_with_info",
72+
"upb_c_proto_library",
73+
)
74+
75+
_CALLABLE_MAP = {
76+
"@rules_proto//proto:defs.bzl": ("proto_library",),
77+
"@com_google_googleapis_imports//:imports.bzl": (
78+
_PY_CALLABLES
79+
+ _JAVA_CALLABLES
80+
+ _GO_CALLABLES
81+
+ _PHP_CALLABLES
82+
+ _NODEJS_CALLABLES
83+
+ _RUBY_CALLABLES
84+
+ _CSHARP_CALLABLES
85+
+ _CC_CALLABLES
86+
+ _MISC_CALLABLES
87+
),
88+
}
89+
90+
491
def parse_content(content: str) -> dict:
92+
"""Parses content from BUILD.bazel and returns a dictionary
93+
containing bazel rules and arguments.
94+
95+
Args:
96+
content(str): contents of a BUILD.bazel.
97+
98+
Returns: Dictionary containing bazel rules and arguments.
99+
100+
"""
5101
glb = sl.Globals.standard()
6102
mod = sl.Module()
7103
packages = {}
@@ -13,50 +109,6 @@ def bazel_target(**args):
13109
def noop_bazel_rule(**args):
14110
pass
15111

16-
def load(name):
17-
mod = sl.Module()
18-
if name == "@rules_proto//proto:defs.bzl":
19-
mod.add_callable("proto_library", bazel_target)
20-
elif name == "@com_google_googleapis_imports//:imports.bzl":
21-
mod.add_callable("py_gapic_assembly_pkg", bazel_target)
22-
mod.add_callable("py_gapic_library", bazel_target)
23-
mod.add_callable("py_test", bazel_target)
24-
mod.add_callable("py_proto_library", bazel_target)
25-
mod.add_callable("py_grpc_library", bazel_target)
26-
mod.add_callable("py_import", bazel_target)
27-
28-
mod.add_callable("proto_library_with_info", bazel_target)
29-
mod.add_callable("java_gapic_assembly_gradle_pkg", bazel_target)
30-
mod.add_callable("java_gapic_library", bazel_target)
31-
mod.add_callable("java_gapic_test", bazel_target)
32-
mod.add_callable("java_grpc_library", bazel_target)
33-
mod.add_callable("java_proto_library", bazel_target)
34-
mod.add_callable("go_gapic_assembly_pkg", bazel_target)
35-
mod.add_callable("go_gapic_library", bazel_target)
36-
mod.add_callable("go_proto_library", bazel_target)
37-
mod.add_callable("go_grpc_library", bazel_target)
38-
mod.add_callable("php_gapic_assembly_pkg", bazel_target)
39-
mod.add_callable("php_gapic_library", bazel_target)
40-
mod.add_callable("php_grpc_library", bazel_target)
41-
mod.add_callable("php_proto_library", bazel_target)
42-
mod.add_callable("nodejs_gapic_assembly_pkg", bazel_target)
43-
mod.add_callable("nodejs_gapic_library", bazel_target)
44-
mod.add_callable("ruby_ads_gapic_library", bazel_target)
45-
mod.add_callable("ruby_cloud_gapic_library", bazel_target)
46-
mod.add_callable("ruby_gapic_assembly_pkg", bazel_target)
47-
mod.add_callable("ruby_grpc_library", bazel_target)
48-
mod.add_callable("ruby_proto_library", bazel_target)
49-
mod.add_callable("csharp_gapic_assembly_pkg", bazel_target)
50-
mod.add_callable("csharp_gapic_library", bazel_target)
51-
mod.add_callable("csharp_grpc_library", bazel_target)
52-
mod.add_callable("csharp_proto_library", bazel_target)
53-
mod.add_callable("cc_grpc_library", bazel_target)
54-
mod.add_callable("cc_gapic_library", bazel_target)
55-
mod.add_callable("cc_proto_library", bazel_target)
56-
mod.add_callable("moved_proto_library", bazel_target)
57-
mod.add_callable("proto_library", bazel_target)
58-
mod.add_callable("upb_c_proto_library", bazel_target)
59-
return mod.freeze()
60112

61113
mod.add_callable("package", noop_bazel_rule)
62114
mod.add_callable("alias", noop_bazel_rule)
@@ -66,6 +118,13 @@ def load(name):
66118
mod.add_callable("java_proto_library", noop_bazel_rule)
67119
mod.add_callable("genrule", noop_bazel_rule)
68120

121+
122+
def load(name):
123+
mod = sl.Module()
124+
for callable_name in _CALLABLE_MAP.get(name, []):
125+
mod.add_callable(callable_name, bazel_target)
126+
return mod.freeze()
127+
69128
ast = sl.parse("BUILD.bazel", content)
70129

71130
sl.eval(mod, ast, glb, sl.FileLoader(load))

0 commit comments

Comments
 (0)