| #!/usr/bin/env python3 |
| |
| from subprocess import check_output |
| import glob |
| import os |
| import shutil |
| |
| def generateProtobufs(output): |
| bazel_bin = check_output(['bazel', 'info', 'bazel-bin']).decode().strip() |
| |
| go_protos = check_output([ |
| 'bazel', |
| 'query', |
| 'kind("go_proto_library", ...)', |
| ]).split() |
| |
| check_output(['bazel', 'build', '-c', 'fastbuild'] + go_protos) |
| |
| for rule in go_protos: |
| rule_dir = rule.decode()[2:].rsplit(':')[0] |
| input_dir = os.path.join(bazel_bin, rule_dir, 'pkg_go_proto_', |
| 'github.com/cncf/xds/go', rule_dir) |
| input_files = glob.glob(os.path.join(input_dir, '*.go')) |
| output_dir = os.path.join(output, rule_dir) |
| |
| # Ensure the output directory exists |
| os.makedirs(output_dir, 0o755, exist_ok=True) |
| for generated_file in input_files: |
| output_file = shutil.copy(generated_file, output_dir) |
| os.chmod(output_file, 0o644) |
| |
| |
| if __name__ == "__main__": |
| workspace = check_output(['bazel', 'info', 'workspace']).decode().strip() |
| output = os.path.join(workspace, 'go') |
| generateProtobufs(output) |