Initial commit

This commit is contained in:
Daniel G. Taylor
2019-10-05 08:36:23 -07:00
commit 6ed3b09f44
26 changed files with 1026 additions and 0 deletions

View File

@@ -0,0 +1,45 @@
#!/usr/bin/env python
import os # isort: skip
os.environ["PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION"] = "python"
import subprocess
import importlib
from typing import Generator, Tuple
from google.protobuf.json_format import Parse
from google.protobuf import symbol_database
from google.protobuf.descriptor_pool import DescriptorPool
root = os.path.dirname(os.path.realpath(__file__))
def get_files(end: str) -> Generator[Tuple[str, str], None, None]:
for r, dirs, files in os.walk(root):
for filename in [f for f in files if f.endswith(end)]:
parts = os.path.splitext(filename)[0].split("-")
yield [parts[0], os.path.join(r, filename)]
if __name__ == "__main__":
os.chdir(root)
for base, filename in get_files(".proto"):
subprocess.run(
f"protoc --python_out=. {os.path.basename(filename)}", shell=True
)
subprocess.run(
f"protoc --plugin=protoc-gen-custom=../../protoc-gen-betterpy.py --custom_out=. {os.path.basename(filename)}",
shell=True,
)
for base, filename in get_files(".json"):
# Reset the internal symbol database so we can import the `Test` message
# multiple times. Ugh.
sym = symbol_database.Default()
sym.pool = DescriptorPool()
imported = importlib.import_module(f"{base}_pb2")
out = filename.replace(".json", ".bin")
serialized = Parse(open(filename).read(), imported.Test()).SerializeToString()
open(out, "wb").write(serialized)