| Index: third_party/grpc/tools/buildgen/plugins/list_protos.py
|
| diff --git a/third_party/WebKit/LayoutTests/http/tests/websocket/close_wsh.py b/third_party/grpc/tools/buildgen/plugins/list_protos.py
|
| similarity index 59%
|
| copy from third_party/WebKit/LayoutTests/http/tests/websocket/close_wsh.py
|
| copy to third_party/grpc/tools/buildgen/plugins/list_protos.py
|
| index 1b02d66267e294ce83977dac64f075981705647c..2f2ac5e05320e7bde259466fc0d970aca182785d 100644
|
| --- a/third_party/WebKit/LayoutTests/http/tests/websocket/close_wsh.py
|
| +++ b/third_party/grpc/tools/buildgen/plugins/list_protos.py
|
| @@ -1,4 +1,4 @@
|
| -# Copyright 2011, Google Inc.
|
| +# Copyright 2015, Google Inc.
|
| # All rights reserved.
|
| #
|
| # Redistribution and use in source and binary forms, with or without
|
| @@ -27,27 +27,44 @@
|
| # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
| # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
|
| +"""Buildgen .proto files list plugin.
|
|
|
| -import logging
|
| -_GOODBYE_MESSAGE = u'Goodbye'
|
| +This parses the list of targets from the yaml build file, and creates
|
| +a list called "protos" that contains all of the proto file names.
|
|
|
| +"""
|
|
|
| -def web_socket_do_extra_handshake(request):
|
| - pass # Always accept.
|
|
|
| +import re
|
|
|
| -def web_socket_transfer_data(request):
|
| - while True:
|
| - line = request.ws_stream.receive_message()
|
| - if line is None:
|
| - return
|
| - if isinstance(line, unicode):
|
| - request.ws_stream.send_message(line, binary=False)
|
| - if line == _GOODBYE_MESSAGE:
|
| - return
|
| - else:
|
| - request.ws_stream.send_message(line, binary=True)
|
|
|
| +def mako_plugin(dictionary):
|
| + """The exported plugin code for list_protos.
|
|
|
| -def web_socket_passive_closing_handshake(request):
|
| - return request.ws_close_code, request.ws_close_reason
|
| + Some projects generators may want to get the full list of unique .proto files
|
| + that are being included in a project. This code extracts all files referenced
|
| + in any library or target that ends in .proto, and builds and exports that as
|
| + a list called "protos".
|
| +
|
| + """
|
| +
|
| + libs = dictionary.get('libs', [])
|
| + targets = dictionary.get('targets', [])
|
| +
|
| + proto_re = re.compile('(.*)\\.proto')
|
| +
|
| + protos = set()
|
| + for lib in libs:
|
| + for src in lib.get('src', []):
|
| + m = proto_re.match(src)
|
| + if m:
|
| + protos.add(m.group(1))
|
| + for tgt in targets:
|
| + for src in tgt.get('src', []):
|
| + m = proto_re.match(src)
|
| + if m:
|
| + protos.add(m.group(1))
|
| +
|
| + protos = sorted(protos)
|
| +
|
| + dictionary['protos'] = protos
|
|
|