import fnmatch import os import os.path from shutil import copyfile print('Searching for manifests...') matches = [] for root, dirnames, filenames in os.walk('bazel-bin\\org\\brotli'): for filename in fnmatch.filter(filenames, '*.runfiles_manifest'): matches.append(os.path.join(root, filename)) for match in matches: print('Scanning manifest ' + match) runfiles = match[:-len('_manifest')] with open(match) as manifest: for entry in manifest: entry = entry.strip() if not entry.startswith("org_brotli_java"): continue if entry.startswith('org_brotli_java/external'): continue (alias, space, link) = entry.partition(' ') if alias.endswith('.jar') or alias.endswith('.exe'): continue link = link.replace('/', '\\') alias = alias.replace('/', '\\') dst = os.path.join(runfiles, alias) if not os.path.exists(dst): print(link + ' -> ' + dst) parent = os.path.dirname(dst) if not os.path.exists(parent): os.makedirs(parent) copyfile(link, dst) print('Finished resolving symlinks')