1#!/usr/bin/env python3 2 3from subprocess import check_output 4import glob 5import os 6import shutil 7 8def generateProtobufs(output): 9 bazel_bin = check_output(['bazel', 'info', 'bazel-bin']).decode().strip() 10 11 go_protos = check_output([ 12 'bazel', 13 'query', 14 'kind("go_proto_library", ...)', 15 ]).split() 16 17 check_output(['bazel', 'build', '-c', 'fastbuild'] + go_protos) 18 19 for rule in go_protos: 20 rule_dir = rule.decode()[2:].rsplit(':')[0] 21 input_dir = os.path.join(bazel_bin, rule_dir, 'pkg_go_proto_', 22 'github.com/cncf/xds/go', rule_dir) 23 input_files = glob.glob(os.path.join(input_dir, '*.go')) 24 output_dir = os.path.join(output, rule_dir) 25 26 # Ensure the output directory exists 27 os.makedirs(output_dir, 0o755, exist_ok=True) 28 for generated_file in input_files: 29 output_file = shutil.copy(generated_file, output_dir) 30 os.chmod(output_file, 0o644) 31 32 33if __name__ == "__main__": 34 workspace = check_output(['bazel', 'info', 'workspace']).decode().strip() 35 output = os.path.join(workspace, 'go') 36 generateProtobufs(output) 37