diff --git a/cit.py b/cit.py index 3058f44fe..383b3230a 100755 --- a/cit.py +++ b/cit.py @@ -91,11 +91,11 @@ def get_available_tools(): """Returns a tuple of (list of infra tools, list of cipd tools)""" infra_tools = [] cipd_tools = [] - starting = os.path.join(TARGET_DIR, 'infra', 'infra', 'tools') + starting = os.path.join(INFRA_DIR, 'infra', 'tools') for root, _, files in os.walk(starting): if '__main__.py' in files: infra_tools.append(root[len(starting)+1:].replace(os.path.sep, '.')) - cipd = os.path.join(TARGET_DIR, 'infra', 'cipd') + cipd = os.path.join(INFRA_DIR, 'cipd') for fn in os.listdir(cipd): if is_exe(os.path.join(cipd, fn)): cipd_tools.append(fn) @@ -107,7 +107,7 @@ def usage(): print("""usage: cit.py [args for tool] Wrapper for maintaining and calling tools in: - "infra.git/run.py infra.tools.*" + "infra.git, infra.tools.*" "infra.git/cipd/*" Available infra tools are:""") @@ -124,18 +124,24 @@ def run(args): if not args: return usage() + env = os.environ tool_name = args[0] # Check to see if it is a infra tool first. - infra_dir = os.path.join( - TARGET_DIR, 'infra', 'infra', 'tools', *tool_name.split('.')) - cipd_file = os.path.join(TARGET_DIR, 'infra', 'cipd', tool_name) + tool_dir = os.path.join( + INFRA_DIR, 'infra', 'tools', *tool_name.split('.')) + cipd_file = os.path.join(INFRA_DIR, 'cipd', tool_name) if sys.platform.startswith('win'): cipd_file += '.exe' - if (os.path.isdir(infra_dir) - and os.path.isfile(os.path.join(infra_dir, '__main__.py'))): + if (os.path.isdir(tool_dir) + and os.path.isfile(os.path.join(tool_dir, '__main__.py'))): cmd = [ - sys.executable, os.path.join(TARGET_DIR, 'infra', 'run.py'), - 'infra.tools.%s' % tool_name] + 'vpython', '-vpython-spec', os.path.join(INFRA_DIR, '.vpython'), + '-m', 'infra.tools.%s' % tool_name] + + # Augment PYTHONPATH so that infra.tools. can be found without + # running from that directory, which would mess up any relative paths passed + # to the tool. + env['PYTHONPATH'] = INFRA_DIR + os.pathsep + env['PYTHONPATH'] elif os.path.isfile(cipd_file) and is_exe(cipd_file): cmd = [cipd_file] else: @@ -144,7 +150,7 @@ def run(args): # Add the remaining arguments. cmd.extend(args[1:]) - return subprocess.call(cmd) + return subprocess.call(cmd, env=env) def main():