| """Deletes the existing bindings, then rebuild using the source .proto file.""" |
| |
| import os |
| from shutil import copyfile |
| |
| |
| UP = '../' |
| PROTO_PATH = 'src/config/proto/chromiumos/config/api/test/tls/' |
| PROTO_NAME = 'common.proto' |
| BUILD_CMD = ( |
| "python -m grpc_tools.protoc -I. --python_out=. --grpc_python_out=. {}" |
| .format(PROTO_NAME)) |
| |
| |
| def delete_old_protos(): |
| """Delete any existing protos or built proto bindings.""" |
| for file in os.listdir('.'): |
| if 'common' in file: |
| os.remove(file) |
| |
| |
| def copy_proto_from_src(): |
| """Copy the proto from the src dir to the local dir.""" |
| proto_dir = get_proto_dir() |
| if os.path.isfile(proto_dir): |
| copyfile(proto_dir, PROTO_NAME) |
| else: |
| raise Exception("Protos not found @ {}".format(proto_dir)) |
| |
| |
| def get_proto_dir(): |
| """Return the full path of the common.proto from TLS.""" |
| return "{}{}{}".format(UP * get_current_depth(), PROTO_PATH, PROTO_NAME) |
| |
| |
| def get_current_depth(): |
| """Return the current depth off /src/ within the file structure.""" |
| dirs = os.getcwd().split('/') |
| src_level = dirs.index('src') |
| return len(dirs) - src_level |
| |
| |
| def create_bindings(): |
| os.system(BUILD_CMD) |
| |
| |
| def main(): |
| delete_old_protos() |
| copy_proto_from_src() |
| create_bindings() |
| |
| if __name__ == "__main__": |
| main() |