update-external-binaries.py 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. #!/usr/bin/env python
  2. import errno
  3. import sys
  4. import os
  5. from lib.config import get_target_arch
  6. from lib.util import safe_mkdir, rm_rf, extract_zip, tempdir, download
  7. VERSION = 'v1.3.0'
  8. SOURCE_ROOT = os.path.abspath(os.path.dirname(os.path.dirname(__file__)))
  9. FRAMEWORKS_URL = 'http://github.com/electron/electron-frameworks/releases' \
  10. '/download/' + VERSION
  11. def main():
  12. os.chdir(SOURCE_ROOT)
  13. version_file = os.path.join(SOURCE_ROOT, 'external_binaries', '.version')
  14. if (is_updated(version_file, VERSION)):
  15. return
  16. rm_rf('external_binaries')
  17. safe_mkdir('external_binaries')
  18. if sys.platform == 'darwin':
  19. download_and_unzip('Mantle')
  20. download_and_unzip('ReactiveCocoa')
  21. download_and_unzip('Squirrel')
  22. elif sys.platform in ['cygwin', 'win32']:
  23. download_and_unzip('directxsdk-' + get_target_arch())
  24. with open(version_file, 'w') as f:
  25. f.write(VERSION)
  26. def is_updated(version_file, version):
  27. existing_version = ''
  28. try:
  29. with open(version_file, 'r') as f:
  30. existing_version = f.readline().strip()
  31. except IOError as e:
  32. if e.errno != errno.ENOENT:
  33. raise
  34. return existing_version == version
  35. def download_and_unzip(framework):
  36. zip_path = download_framework(framework)
  37. if zip_path:
  38. extract_zip(zip_path, 'external_binaries')
  39. def download_framework(framework):
  40. filename = framework + '.zip'
  41. url = FRAMEWORKS_URL + '/' + filename
  42. download_dir = tempdir(prefix='electron-')
  43. path = os.path.join(download_dir, filename)
  44. download('Download ' + framework, url, path)
  45. return path
  46. if __name__ == '__main__':
  47. sys.exit(main())