3 # Copyright 2014 The Chromium Authors. All rights reserved.
4 # Use of this source code is governed by a BSD-style license that can be
5 # found in the LICENSE file.
7 ''' Generates a deps.js file based on an input list of javascript files using
8 Closure style provide/require calls.
15 from jsbundler
import PathRewriter
17 _SCRIPT_DIR
= os
.path
.realpath(os
.path
.dirname(__file__
))
18 _CHROME_SOURCE
= os
.path
.realpath(
19 os
.path
.join(_SCRIPT_DIR
, *[os
.path
.pardir
] * 6))
20 sys
.path
.insert(0, os
.path
.join(
21 _CHROME_SOURCE
, ('chrome/third_party/chromevox/third_party/' +
22 'closure-library/closure/bin/build')))
27 parser
= optparse
.OptionParser(description
=__doc__
)
28 parser
.add_option('-w', '--rewrite_prefix', action
='append', default
=[],
29 dest
='prefix_map', metavar
='SPEC',
30 help=('Two path prefixes, separated by colons ' +
31 'specifying that a file whose (relative) path ' +
32 'name starts with the first prefix should have ' +
33 'that prefix replaced by the second prefix to ' +
34 'form a path relative to the output directory. ' +
35 'The resulting path is used in the deps mapping ' +
36 'file path to a list of provided and required ' +
38 parser
.add_option('-o', '--output_file', action
='store', default
=[],
40 help=('Where to output the generated deps file.'))
41 options
, args
= parser
.parse_args()
43 path_rewriter
= PathRewriter(options
.prefix_map
)
45 # Write the generated deps file.
46 with
open(options
.output_file
, 'w') as output
:
48 js_deps
= source
.Source(source
.GetFileContents(path
))
49 path
= path_rewriter
.RewritePath(path
)
50 line
= 'goog.addDependency(\'%s\', %s, %s);\n' % (
51 path
, sorted(js_deps
.provides
), sorted(js_deps
.requires
))
55 if __name__
== '__main__':