1# Copyright (c) 2014 The Chromium Authors. All rights reserved.
2# Use of this source code is governed by a BSD-style license that can be
3# found in the LICENSE file.
4
5import codecs
6import optparse
7import os
8import sys
9
10import tvcm
11
12tracing_path = os.path.abspath(os.path.join(os.path.dirname(__file__),
13                                            '..', '..'))
14if tracing_path not in sys.path:
15  sys.path.append(tracing_path)
16
17from tracing import tracing_project
18
19
20def main(args):
21  parser = optparse.OptionParser(usage="%prog --outdir=<directory>")
22  parser.add_option("--outdir", dest="out_dir",
23                    help="Where to place generated content")
24  parser.add_option('--no-min', dest='no_min', default=False,
25                    action='store_true',
26                    help='skip minification')
27  options, args = parser.parse_args(args)
28
29  if not options.out_dir:
30    sys.stderr.write("ERROR: Must specify --outdir=<directory>")
31    parser.print_help()
32    return 1
33
34  names = ["ui.extras.about_tracing.about_tracing"]
35  project = tracing_project.TracingProject()
36  load_sequence = project.CalcLoadSequenceForModuleNames(names)
37
38  olddir = os.getcwd()
39  try:
40    if not os.path.exists(options.out_dir):
41      os.makedirs(options.out_dir)
42    o = codecs.open(os.path.join(options.out_dir, "about_tracing.html"), 'w',
43                    encoding='utf-8')
44    try:
45      tvcm.GenerateStandaloneHTMLToFile(
46          o,
47          load_sequence,
48          title='chrome://tracing',
49          flattened_js_url='tracing.js',
50          minify=not options.no_min)
51    except tvcm.module.DepsException, ex:
52      sys.stderr.write("Error: %s\n\n" % str(ex))
53      return 255
54    o.close()
55
56    o = codecs.open(os.path.join(options.out_dir, "about_tracing.js"), 'w',
57                    encoding='utf-8')
58    assert o.encoding == 'utf-8'
59    tvcm.GenerateJSToFile(
60        o,
61        load_sequence,
62        use_include_tags_for_scripts=False,
63        dir_for_include_tag_root=options.out_dir,
64        minify=not options.no_min)
65    o.close()
66
67  finally:
68    os.chdir(olddir)
69
70  return 0
71