57 строки
1.5 KiB
Python
Executable File
57 строки
1.5 KiB
Python
Executable File
#!/usr/bin/env python
|
|
|
|
import os
|
|
import shutil
|
|
import subprocess
|
|
import sys
|
|
import tempfile
|
|
|
|
|
|
SOURCE_ROOT = os.path.dirname(os.path.dirname(__file__))
|
|
|
|
|
|
def main():
|
|
archive = sys.argv[1]
|
|
coffee_source_files = sys.argv[2:]
|
|
|
|
output_dir = tempfile.mkdtemp()
|
|
compile_coffee(coffee_source_files, output_dir)
|
|
call_asar(archive, output_dir)
|
|
shutil.rmtree(output_dir)
|
|
|
|
|
|
def compile_coffee(coffee_source_files, output_dir):
|
|
for source_file in coffee_source_files:
|
|
output_filename = os.path.splitext(source_file)[0] + '.js'
|
|
output_path = os.path.join(output_dir, output_filename)
|
|
call_compile_coffee(source_file, output_path)
|
|
|
|
|
|
def call_compile_coffee(source_file, output_filename):
|
|
compile_coffee = os.path.join(SOURCE_ROOT, 'tools', 'compile-coffee.py')
|
|
subprocess.check_call([sys.executable, compile_coffee, source_file,
|
|
output_filename])
|
|
|
|
|
|
def call_asar(archive, output_dir):
|
|
js_dir = os.path.join(output_dir, 'atom')
|
|
asar = os.path.join(SOURCE_ROOT, 'node_modules', 'asar', 'bin', 'asar')
|
|
subprocess.check_call([find_node(), asar, 'pack', js_dir, archive])
|
|
|
|
|
|
def find_node():
|
|
WINDOWS_NODE_PATHs = [
|
|
'C:/Program Files (x86)/nodejs',
|
|
'C:/Program Files/nodejs',
|
|
] + os.environ['PATH'].split(os.pathsep)
|
|
|
|
if sys.platform in ['win32', 'cygwin']:
|
|
for path in WINDOWS_NODE_PATHs:
|
|
full_path = os.path.join(path, 'node.exe')
|
|
if os.path.exists(full_path):
|
|
return full_path
|
|
return 'node'
|
|
|
|
if __name__ == '__main__':
|
|
sys.exit(main())
|