2 # Copyright (c) 2009 The Chromium Authors. All rights reserved.
3 # Use of this source code is governed by a BSD-style license that can be
4 # found in the LICENSE file.
8 from subprocess import Popen, PIPE
10 # Try locating depot_tools from the user's PATH.
11 depot_tools_path = None
13 # First parse PATH if there's a "depot_tools" inside
14 for path in os.environ.get("PATH").split(os.pathsep):
15 if not path.endswith("depot_tools") and not path.endswith("depot_tools/"):
17 depot_tools_path = path
20 # If depot_tools dir is not called depot_tools, or other weirdness
21 if not depot_tools_path:
22 # Grab a `which gclient', which gives first match
23 # `which' also uses PATH, but is not restricted to specific directory name
24 path = Popen(["which", "gclient"], stdout=PIPE).communicate()[0].strip()
26 depot_tools_path = path.replace("/gclient","")
28 # If we found depot_tools, add it to the script's import path.
29 # Use realpath to normalize the actual path
31 sys.path.insert(0, os.path.realpath(depot_tools_path))
33 print "ERROR: Could not find depot_tools in your PATH."
34 print "ERROR: Please add it to your PATH and try again."
37 # Try importing git_cl_hooks from depot_tools.
41 print "ERROR: Could not import git_cl_hooks from depot_tools in your PATH."
42 print "ERROR: Make sure %s is up-to-date and try again." % depot_tools_path
45 # Ensure we were called with the necessary number of arguments.
46 program_name = os.path.basename(sys.argv[0])
47 if len(sys.argv) != 2:
48 print "usage: %s [upstream branch]" % program_name
51 # Run the hooks library with our arguments.
52 exec git_cl_hooks.RunHooks(hook_name=program_name, upstream_branch=sys.argv[1])