#!/usr/bin/env python # Copyright (c) 2012 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. """Reads a trace. Mostly for testing.""" import logging import optparse import os import sys import trace_inputs BASE_DIR = os.path.dirname(os.path.abspath(__file__)) ROOT_DIR = os.path.dirname(os.path.dirname(BASE_DIR)) def read_trace(logname, root_dir, cwd_dir, product_dir): # Resolve any symlink root_dir = os.path.realpath(root_dir) api = trace_inputs.get_api() _, _, _, _, simplified = trace_inputs.load_trace(logname, root_dir, api) variables = trace_inputs.generate_dict(simplified, cwd_dir, product_dir) trace_inputs.pretty_print(variables, sys.stdout) def main(): """CLI frontend to validate arguments.""" parser = optparse.OptionParser( usage='%prog [gtest]') parser.add_option( '-v', '--verbose', action='count', default=0, help='Use up to 3 times to increase logging level') parser.add_option( '-c', '--cwd', default='chrome', help='Signal to start the process from this relative directory. When ' 'specified, outputs the inputs files in a way compatible for ' 'gyp processing. Should be set to the relative path containing the ' 'gyp file, e.g. \'chrome\' or \'net\'') parser.add_option( '-p', '--product-dir', default='out/Release', help='Directory for PRODUCT_DIR. Default: %default') parser.add_option( '--root-dir', default=ROOT_DIR, help='Root directory to base everything off. Default: %default') options, args = parser.parse_args() level = [logging.ERROR, logging.INFO, logging.DEBUG][min(2, options.verbose)] logging.basicConfig( level=level, format='%(levelname)5s %(module)15s(%(lineno)3d):%(message)s') if len(args) != 1: parser.error('Please provide the log to read') if not options.product_dir: parser.error('--product-dir is required') if not options.cwd: parser.error('--cwd is required') return read_trace( args[0], options.root_dir, options.cwd, options.product_dir) if __name__ == '__main__': sys.exit(main())