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+
115import 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+
491def 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