build.py 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. #!/usr/bin/env python
  2. import argparse
  3. import json
  4. import os
  5. import shutil
  6. import sys
  7. import tempfile
  8. def main(argv=None):
  9. parser = argparse.ArgumentParser()
  10. parser.add_argument('--include', action='append', choices=['common', 'canvas', 'webgl', 'extras'], required=True)
  11. parser.add_argument('--externs', action='append', default=['externs_common.js'])
  12. parser.add_argument('--minify', action='store_true', default=False)
  13. parser.add_argument('--output', default='../build/three.js')
  14. # parser.add_argument('--debug', help='Generate list of files to include for debugging', action='store_true', default=False)
  15. args = parser.parse_args()
  16. # load files
  17. f = open('files.json', 'r')
  18. files = json.load(f)
  19. f.close()
  20. output = args.output
  21. # merge
  22. print(' * Building ' + output)
  23. file, path = tempfile.mkstemp()
  24. for include in args.include:
  25. for filename in files[include]:
  26. src = open(filename, 'r')
  27. os.write(file, src.read())
  28. src.close()
  29. # save
  30. if args.minify is False:
  31. shutil.copy(path, output)
  32. else:
  33. externs = ' --externs '.join(args.externs)
  34. 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))
  35. # header
  36. f = open(output,'r')
  37. text = f.read()
  38. f.close()
  39. f = open(output,'w')
  40. f.write(("// %s - http://github.com/mrdoob/three.js\n" % os.path.basename(output)) + text)
  41. f.close()
  42. os.close(file)
  43. os.unlink(path)
  44. if __name__ == "__main__":
  45. main()