grpc
tools
buildgen
plugins
list_protos.py
Go to the documentation of this file.
1
# Copyright 2015 gRPC authors.
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
"""Buildgen .proto files list plugin.
15
16
This parses the list of targets from the yaml build file, and creates
17
a list called "protos" that contains all of the proto file names.
18
19
"""
20
21
import
re
22
23
24
def
mako_plugin
(dictionary):
25
"""The exported plugin code for list_protos.
26
27
Some projects generators may want to get the full list of unique .proto files
28
that are being included in a project. This code extracts all files referenced
29
in any library or target that ends in .proto, and builds and exports that as
30
a list called "protos".
31
32
"""
33
34
libs = dictionary.get(
'libs'
, [])
35
targets = dictionary.get(
'targets'
, [])
36
37
proto_re = re.compile(
'(.*)\\.proto'
)
38
39
protos =
set
()
40
for
lib
in
libs:
41
for
src
in
lib.get(
'src'
, []):
42
m = proto_re.match(src)
43
if
m:
44
protos.add(m.group(1))
45
for
tgt
in
targets:
46
for
src
in
tgt.get(
'src'
, []):
47
m = proto_re.match(src)
48
if
m:
49
protos.add(m.group(1))
50
51
protos = sorted(protos)
52
53
dictionary[
'protos'
] = protos
list_protos.mako_plugin
def mako_plugin(dictionary)
Definition:
list_protos.py:24
cpp.gmock_class.set
set
Definition:
bloaty/third_party/googletest/googlemock/scripts/generator/cpp/gmock_class.py:44
grpc
Author(s):
autogenerated on Fri May 16 2025 02:59:15