serve-node-headers.py 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. #!/usr/bin/env python
  2. import argparse
  3. import atexit
  4. import os
  5. import shutil
  6. import sys
  7. import tarfile
  8. import time
  9. from subprocess import Popen, PIPE
  10. from lib.util import execute_stdout
  11. SOURCE_ROOT = os.path.abspath(os.path.dirname(os.path.dirname(__file__)))
  12. DIST_DIR = os.path.join(SOURCE_ROOT, 'dist')
  13. def main():
  14. args = parse_args()
  15. header_dir = os.path.join(DIST_DIR, args.version)
  16. # Generate Headers
  17. script_path = os.path.join(SOURCE_ROOT, 'script', 'create-node-headers.py')
  18. execute_stdout([sys.executable, script_path, '--version', args.version,
  19. '--directory', header_dir])
  20. # Launch server
  21. script_path = os.path.join(SOURCE_ROOT, 'node_modules', 'serve', 'bin',
  22. 'serve.js')
  23. server = Popen(['node', script_path, '--port=' + args.port], stdout=PIPE,
  24. cwd=DIST_DIR)
  25. def cleanup():
  26. server.kill()
  27. atexit.register(cleanup)
  28. time.sleep(1)
  29. # Generate Checksums
  30. script_path = os.path.join(SOURCE_ROOT, 'script', 'upload-node-checksums.py')
  31. execute_stdout([sys.executable, script_path, '--version', args.version,
  32. '--dist-url', 'http://localhost:' + args.port,
  33. '--target-dir', header_dir])
  34. print("Point your npm config at 'http://localhost:" + args.port + "'")
  35. server.wait()
  36. def parse_args():
  37. parser = argparse.ArgumentParser(description='create node header tarballs')
  38. parser.add_argument('-v', '--version', help='Specify the version',
  39. required=True)
  40. parser.add_argument('-p', '--port', help='Specify port to run local server',
  41. default='4321')
  42. return parser.parse_args()
  43. if __name__ == '__main__':
  44. sys.exit(main())