Buckets:
| """Unpackages a bazel emscripten archive for use in a bazel BUILD rule. | |
| This script will take a tar archive containing the output of the emscripten | |
| toolchain. This file contains any output files produced by a wasm_cc_binary or a | |
| cc_binary built with --config=wasm. The files are extracted into the given | |
| output paths. | |
| The contents of the archive are expected to match the given outputs extnames. | |
| This script and its accompanying Bazel rule should allow you to extract a | |
| WebAssembly binary into a larger web application. | |
| """ | |
| import argparse | |
| import os | |
| import tarfile | |
| def ensure(f): | |
| if not os.path.exists(f): | |
| with open(f, 'w'): | |
| pass | |
| def main(): | |
| parser = argparse.ArgumentParser() | |
| parser.add_argument('--archive', help='The archive to extract from.') | |
| parser.add_argument('--outputs', help='Comma separated list of files that should be extracted from the archive. Only the extname has to match a file in the archive.') | |
| parser.add_argument('--allow_empty_outputs', help='If an output listed in --outputs does not exist, create it anyways.', action='store_true') | |
| args = parser.parse_args() | |
| args.archive = os.path.normpath(args.archive) | |
| args.outputs = args.outputs.split(",") | |
| tar = tarfile.open(args.archive) | |
| for member in tar.getmembers(): | |
| extname = '.' + member.name.split('.', 1)[1] | |
| for idx, output in enumerate(args.outputs): | |
| if output.endswith(extname): | |
| member_file = tar.extractfile(member) | |
| with open(output, "wb") as output_file: | |
| output_file.write(member_file.read()) | |
| args.outputs.pop(idx) | |
| break | |
| for output in args.outputs: | |
| extname = '.' + output.split('.', 1)[1] | |
| if args.allow_empty_outputs: | |
| ensure(output) | |
| else: | |
| print("[ERROR] Archive does not contain file with extname: %s" % extname) | |
| if __name__ == '__main__': | |
| main() | |
Xet Storage Details
- Size:
- 1.85 kB
- Xet hash:
- 6618aa9e2be87e16624b1ae73572b33aaf31fb5617f095ba9b8df56857f26226
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.