1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- #!/usr/bin/env python
- import argparse
- import json
- import os
- import shutil
- import sys
- import tempfile
- def main(argv=None):
- parser = argparse.ArgumentParser()
- parser.add_argument('--include', action='append', choices=['common', 'canvas', 'webgl', 'extras'], required=True)
- parser.add_argument('--externs', action='append', default=['externs_common.js'])
- parser.add_argument('--minify', action='store_true', default=False)
- parser.add_argument('--output', default='../build/three.js')
- # parser.add_argument('--debug', help='Generate list of files to include for debugging', action='store_true', default=False)
- args = parser.parse_args()
- # load files
- f = open('files.json', 'r')
- files = json.load(f)
- f.close()
- output = args.output
- # merge
- print(' * Building ' + output)
- file, path = tempfile.mkstemp()
- for include in args.include:
- for filename in files[include]:
- src = open(filename, 'r')
- os.write(file, src.read())
- src.close()
- # save
- if args.minify is False:
- shutil.copy(path, output)
- else:
- externs = ' --externs '.join(args.externs)
- os.system('java -jar compiler/compiler.jar --warning_level=VERBOSE --jscomp_off=globalThis --externs %s --jscomp_off=checkTypes --language_in=ECMASCRIPT5_STRICT --js %s --js_output_file %s' % (externs, path, output))
- # header
- f = open(output,'r')
- text = f.read()
- f.close()
- f = open(output,'w')
- f.write(("// %s - http://github.com/mrdoob/three.js\n" % os.path.basename(output)) + text)
- f.close()
- os.close(file)
- os.unlink(path)
- if __name__ == "__main__":
- main()
|