普通文本  |  37行  |  1.09 KB

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