123456789101112131415161718192021222324252627282930313233343536 |
- #!/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)
|