blob: 79be6ebdc4e8da6fad708ae72808ac82a3a531a8 [file] [log] [blame]
#!/usr/bin/env python
# Copyright (c) 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.
import argparse
import sys
import os
import json
"""
Prints the source path of the provided project name.
This utility loads the specified x_project.py from one of our standard
module folders, constructs its project module, and prints the source paths that
it uses.
This is used by the node_bootstrap.js to load the tracing code into node.
"""
def _ToUpperCamelCase(name):
in_parts = name.split('_')
out_parts = []
for part in in_parts:
out_part = part[0].upper() + part[1:]
out_parts.append(out_part)
return ''.join(out_parts)
def _RelPathToUnixPath(p):
return p.replace(os.sep, '/')
def Main(args):
parser = argparse.ArgumentParser(
usage='%(prog)s project_name',
epilog='Prints the source paths for the provided catapult project\n')
parser.add_argument('--source-paths', action='store_true')
parser.add_argument('--headless-test-module-filenames', action='store_true')
parser.add_argument('project_name', nargs=1)
args = parser.parse_args(args)
catapult_path = os.path.abspath(os.path.join(os.path.dirname(__file__),
'..'))
project_name = args.project_name[0]
project_path = os.path.join(catapult_path, project_name)
sys.path.append(project_path)
project_module_name = project_name + '_project'
try:
project_module = __import__(project_module_name, fromlist=[True])
except:
sys.stderr.write('Could not import %s from %s' % (project_module_name,
project_path))
return 1
project_module.UpdateSysPathIfNeeded()
class_name = _ToUpperCamelCase(project_name) + 'Project'
try:
project_class = project_module.__dict__[class_name]
except:
sys.stderr.write('Could not find %s in %s' % (class_name,
project_module_name))
return 1
project = project_class()
if args.source_paths:
print json.dumps(project.source_paths)
if args.headless_test_module_filenames:
headless_test_module_filenames = ['/' + _RelPathToUnixPath(x)
for x in project.FindAllD8TestModuleRelPaths()]
headless_test_module_filenames.sort()
print json.dumps(headless_test_module_filenames)
if __name__ == '__main__':
sys.exit(Main(sys.argv[1:]))