build.py 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. #!/usr/bin/env python
  2. import sys
  3. sys.path.append("../tools")
  4. import mergejs
  5. import optparse
  6. def build(config_file = None, output_file = None, options = None):
  7. have_compressor = []
  8. try:
  9. import jsmin
  10. have_compressor.append("jsmin")
  11. except ImportError:
  12. print "No jsmin"
  13. try:
  14. import closure
  15. have_compressor.append("closure")
  16. except Exception, E:
  17. print "No closure (%s)" % E
  18. try:
  19. import closure_ws
  20. have_compressor.append("closure_ws")
  21. except ImportError:
  22. print "No closure_ws"
  23. try:
  24. import minimize
  25. have_compressor.append("minimize")
  26. except ImportError:
  27. print "No minimize"
  28. use_compressor = None
  29. if options.compressor and options.compressor in have_compressor:
  30. use_compressor = options.compressor
  31. sourceDirectory = "../lib"
  32. configFilename = "full.cfg"
  33. outputFilename = "OpenLayers.js"
  34. if config_file:
  35. configFilename = config_file
  36. extension = configFilename[-4:]
  37. if extension != ".cfg":
  38. configFilename = config_file + ".cfg"
  39. if output_file:
  40. outputFilename = output_file
  41. print "Merging libraries."
  42. merged = mergejs.run(sourceDirectory, None, configFilename)
  43. print "Compressing using %s" % use_compressor
  44. if use_compressor == "jsmin":
  45. minimized = jsmin.jsmin(merged)
  46. elif use_compressor == "minimize":
  47. minimized = minimize.minimize(merged)
  48. elif use_compressor == "closure_ws":
  49. minimized = closure_ws.minimize(merged)
  50. elif use_compressor == "closure":
  51. minimized = closure.minimize(merged)
  52. else: # fallback
  53. minimized = merged
  54. print "Adding license file."
  55. minimized = file("license.txt").read() + minimized
  56. print "Writing to %s." % outputFilename
  57. file(outputFilename, "w").write(minimized)
  58. print "Done."
  59. if __name__ == '__main__':
  60. opt = optparse.OptionParser(usage="%s [options] [config_file] [output_file]\n Default config_file is 'full.cfg', Default output_file is 'OpenLayers.js'")
  61. opt.add_option("-c", "--compressor", dest="compressor", help="compression method: one of 'jsmin', 'minimize', 'closure_ws', 'closure', or 'none'", default="jsmin")
  62. (options, args) = opt.parse_args()
  63. if not len(args):
  64. build(options=options)
  65. elif len(args) == 1:
  66. build(args[0], options=options)
  67. elif len(args) == 2:
  68. build(args[0], args[1], options=options)
  69. else:
  70. print "Wrong number of arguments"