File: generate_deps.py

package info (click to toggle)
chromium-browser 41.0.2272.118-1
  • links: PTS, VCS
  • area: main
  • in suites: jessie-kfreebsd
  • size: 2,189,132 kB
  • sloc: cpp: 9,691,462; ansic: 3,341,451; python: 712,689; asm: 518,779; xml: 208,926; java: 169,820; sh: 119,353; perl: 68,907; makefile: 28,311; yacc: 13,305; objc: 11,385; tcl: 3,186; cs: 2,225; sql: 2,217; lex: 2,215; lisp: 1,349; pascal: 1,256; awk: 407; ruby: 155; sed: 53; php: 14; exp: 11
file content (56 lines) | stat: -rwxr-xr-x 2,139 bytes parent folder | download | duplicates (2)
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
45
46
47
48
49
50
51
52
53
54
55
56
#!/usr/bin/env python

# Copyright 2014 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.

''' Generates a deps.js file based on an input list of javascript files using
Closure style provide/require calls.
'''

import optparse
import os
import sys

from jsbundler import PathRewriter

_SCRIPT_DIR = os.path.realpath(os.path.dirname(__file__))
_CHROME_SOURCE = os.path.realpath(
    os.path.join(_SCRIPT_DIR, *[os.path.pardir] * 6))
sys.path.insert(0, os.path.join(
    _CHROME_SOURCE, ('chrome/third_party/chromevox/third_party/' +
                     'closure-library/closure/bin/build')))
import source


def main():
  parser = optparse.OptionParser(description=__doc__)
  parser.add_option('-w', '--rewrite_prefix', action='append', default=[],
                    dest='prefix_map', metavar='SPEC',
                    help=('Two path prefixes, separated by colons ' +
                          'specifying that a file whose (relative) path ' +
                          'name starts with the first prefix should have ' +
                          'that prefix replaced by the second prefix to ' +
                          'form a path relative to the output directory. ' +
                          'The resulting path is used in the deps mapping ' +
                          'file path to a list of provided and required ' +
                          'namespaces.'))
  parser.add_option('-o', '--output_file', action='store', default=[],
                    metavar='SPEC',
                    help=('Where to output the generated deps file.'))
  options, args = parser.parse_args()

  path_rewriter = PathRewriter(options.prefix_map)

  # Write the generated deps file.
  with open(options.output_file, 'w') as output:
    for path in args:
      js_deps = source.Source(source.GetFileContents(path))
      path = path_rewriter.RewritePath(path)
      line = 'goog.addDependency(\'%s\', %s, %s);\n' % (
          path, sorted(js_deps.provides), sorted(js_deps.requires))
      output.write(line)


if __name__ == '__main__':
  main()