#!/usr/bin/env python import argparse import atexit import os import shutil import sys import tarfile import time from subprocess import Popen, PIPE from lib.util import execute_stdout SOURCE_ROOT = os.path.abspath(os.path.dirname(os.path.dirname(__file__))) DIST_DIR = os.path.join(SOURCE_ROOT, 'dist') def main(): args = parse_args() header_dir = os.path.join(DIST_DIR, args.version) # Generate Headers script_path = os.path.join(SOURCE_ROOT, 'script', 'create-node-headers.py') execute_stdout([sys.executable, script_path, '--version', args.version, '--directory', header_dir]) # Launch server script_path = os.path.join(SOURCE_ROOT, 'node_modules', 'serve', 'bin', 'serve.js') server = Popen(['node', script_path, '--port=' + args.port], stdout=PIPE, cwd=DIST_DIR) def cleanup(): server.kill() atexit.register(cleanup) time.sleep(1) # Generate Checksums script_path = os.path.join(SOURCE_ROOT, 'script', 'upload-node-checksums.py') execute_stdout([sys.executable, script_path, '--version', args.version, '--dist-url', 'http://localhost:' + args.port, '--target-dir', header_dir]) print("Point your npm config at 'http://localhost:" + args.port + "'") server.wait() def parse_args(): parser = argparse.ArgumentParser(description='create node header tarballs') parser.add_argument('-v', '--version', help='Specify the version', required=True) parser.add_argument('-p', '--port', help='Specify port to run local server', default='4321') return parser.parse_args() if __name__ == '__main__': sys.exit(main())