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