Index: third_party/grpc/templates/tools/run_tests/sources_and_headers.json.template |
diff --git a/third_party/grpc/templates/tools/run_tests/sources_and_headers.json.template b/third_party/grpc/templates/tools/run_tests/sources_and_headers.json.template |
new file mode 100644 |
index 0000000000000000000000000000000000000000..18b9bc26547ccf992de4b5a2058bba35a7f1615f |
--- /dev/null |
+++ b/third_party/grpc/templates/tools/run_tests/sources_and_headers.json.template |
@@ -0,0 +1,50 @@ |
+%YAML 1.2 |
+--- | |
+ <%! |
+ import json |
+ import os |
+ |
+ def proto_headers(src): |
+ out = [] |
+ for f in src: |
+ name, ext = os.path.splitext(f) |
+ if ext == '.proto': |
+ out.extend(fmt % name for fmt in ['%s.grpc.pb.h', '%s.pb.h']) |
+ return out |
+ |
+ def all_targets(targets, libs): |
+ for tgt in targets: |
+ yield ('target', tgt) |
+ for tgt in libs: |
+ yield ('lib', tgt) |
+ |
+ def no_protos_filter(src): |
+ return os.path.splitext(src)[1] != '.proto' |
+ |
+ def no_third_party_filter(src): |
+ return not src.startswith('third_party/') |
+ |
+ def filter_srcs(srcs, filters): |
+ out = [] |
+ for s in srcs: |
+ filter_passes = (f(s) for f in filters) |
+ if all(filter_passes): |
+ out.append(s) |
+ return out |
+ %> |
+ |
+ ${json.dumps([{"name": tgt.name, |
+ "type": typ, |
+ "language": tgt.language, |
+ "third_party": tgt.boringssl or tgt.zlib, |
+ "src": sorted( |
+ filter_srcs(tgt.src, (no_protos_filter, no_third_party_filter)) + |
+ filter_srcs(tgt.get('public_headers', []), (no_protos_filter, no_third_party_filter)) + |
+ filter_srcs(tgt.get('headers', []), (no_third_party_filter,))), |
+ "headers": sorted( |
+ tgt.get('public_headers', []) + |
+ tgt.get('headers', []) + |
+ proto_headers(tgt.src)), |
+ "deps": sorted(tgt.get('deps', []))} |
+ for typ, tgt in all_targets(targets, libs)], |
+ sort_keys=True, indent=2)} |