summaryrefslogtreecommitdiffstats
path: root/third_party/jstemplate/compile.py
blob: 3e75807525ccdc8f5fef6b858da5d25286bb9cf1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#!/usr/bin/env python
# Copyright (c) 2011 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

"""Combines the javascript files needed by jstemplate into a single file."""

import httplib
import urllib


def main():
  srcs = ['util.js', 'jsevalcontext.js', 'jstemplate.js', 'exports.js']
  out = 'jstemplate_compiled.js'

  # Wrap the output in an anonymous function to prevent poluting the global
  # namespace.
  output_wrapper = '(function(){%s})()'

  # Define the parameters for the POST request and encode them in a URL-safe
  # format. See http://code.google.com/closure/compiler/docs/api-ref.html for
  # API reference.
  params = urllib.urlencode(
    map(lambda src: ('js_code', file(src).read()), srcs) +
    [
      ('compilation_level', 'ADVANCED_OPTIMIZATIONS'),
      ('output_format', 'text'),
      ('output_info', 'compiled_code'),
    ])

  # Always use the following value for the Content-type header.
  headers = {'Content-type': 'application/x-www-form-urlencoded'}
  conn = httplib.HTTPConnection('closure-compiler.appspot.com')
  conn.request('POST', '/compile', params, headers)
  response = conn.getresponse()
  out_file = file(out, 'w')
  out_file.write(output_wrapper % response.read())
  out_file.close()
  conn.close()
  return 0


if __name__ == '__main__':
  sys.exit(main())