|  | 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') |