mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-12-14 18:32:29 +00:00
53 lines
1.5 KiB
Python
53 lines
1.5 KiB
Python
|
#!/usr/bin/env python3
|
||
|
|
||
|
# This is a helper utility.
|
||
|
# It generates files in the "pb2" folder using the protocol buffer compiler.
|
||
|
# This script must be called manually after any change pf "clickhouse_grpc.proto"
|
||
|
|
||
|
import grpc_tools # pip3 install grpcio-tools
|
||
|
|
||
|
import os, shutil, subprocess
|
||
|
|
||
|
|
||
|
# Settings.
|
||
|
script_path = os.path.realpath(__file__)
|
||
|
script_name = os.path.basename(script_path)
|
||
|
script_dir = os.path.dirname(script_path)
|
||
|
root_dir = os.path.abspath(os.path.join(script_dir, "../.."))
|
||
|
|
||
|
grpc_proto_dir = os.path.abspath(os.path.join(root_dir, "src/Server/grpc_protos"))
|
||
|
grpc_proto_filename = "clickhouse_grpc.proto"
|
||
|
|
||
|
# Files in the "pb2" folder which will be generated by this script.
|
||
|
pb2_filenames = ["clickhouse_grpc_pb2.py", "clickhouse_grpc_pb2_grpc.py"]
|
||
|
pb2_dir = os.path.join(script_dir, "pb2")
|
||
|
|
||
|
|
||
|
# Processes the protobuf schema with the protocol buffer compiler and generates the "pb2" folder.
|
||
|
def generate_pb2():
|
||
|
print(f"Generating files:")
|
||
|
for pb2_filename in pb2_filenames:
|
||
|
print(os.path.join(pb2_dir, pb2_filename))
|
||
|
|
||
|
os.makedirs(pb2_dir, exist_ok=True)
|
||
|
|
||
|
cmd = [
|
||
|
"python3",
|
||
|
"-m",
|
||
|
"grpc_tools.protoc",
|
||
|
"-I" + grpc_proto_dir,
|
||
|
"--python_out=" + pb2_dir,
|
||
|
"--grpc_python_out=" + pb2_dir,
|
||
|
os.path.join(grpc_proto_dir, grpc_proto_filename),
|
||
|
]
|
||
|
subprocess.run(cmd)
|
||
|
|
||
|
for pb2_filename in pb2_filenames:
|
||
|
assert os.path.exists(os.path.join(pb2_dir, pb2_filename))
|
||
|
print("Done! (generate_pb2)")
|
||
|
|
||
|
|
||
|
# MAIN
|
||
|
if __name__ == "__main__":
|
||
|
generate_pb2()
|