| Index: git-cl-upload-hook
 | 
| ===================================================================
 | 
| --- git-cl-upload-hook	(revision 28125)
 | 
| +++ git-cl-upload-hook	(working copy)
 | 
| @@ -4,8 +4,6 @@
 | 
|  # found in the LICENSE file.
 | 
|  
 | 
|  import os
 | 
| -import re
 | 
| -import subprocess
 | 
|  import sys
 | 
|  
 | 
|  # Find depot_tools in PATH, append it to sys.path so we can import.
 | 
| @@ -16,60 +14,12 @@
 | 
|    sys.path.append(path)
 | 
|    break
 | 
|  
 | 
| -import gclient_scm
 | 
| -import presubmit_support
 | 
| +import git_cl_hooks
 | 
|  
 | 
| -def Backquote(cmd, cwd=None):
 | 
| -  """Like running `cmd` in a shell script."""
 | 
| -  return subprocess.Popen(cmd,
 | 
| -                          cwd=cwd,
 | 
| -                          stdout=subprocess.PIPE).communicate()[0].strip()
 | 
| -
 | 
| -
 | 
| -class ChangeOptions:
 | 
| -  def __init__(self, commit=None, upstream_branch=None):
 | 
| -    self.commit = commit
 | 
| -    self.verbose = None
 | 
| -    self.default_presubmit = None
 | 
| -    self.may_prompt = None
 | 
| -
 | 
| -    root = os.path.abspath(Backquote(['git', 'rev-parse', '--show-cdup']))
 | 
| -    if not root:
 | 
| -      raise Exception("Could not get root directory.")
 | 
| -    log = Backquote(['git', 'show', '--name-only',
 | 
| -                     '--pretty=format:%H%n%s%n%n%b'])
 | 
| -    m = re.match(r'^(\w+)\n(.*)$', log, re.MULTILINE|re.DOTALL)
 | 
| -    if not m:
 | 
| -      raise Exception("Could not parse log message: %s" % log)
 | 
| -    name = m.group(1)
 | 
| -    description = m.group(2)
 | 
| -    files = gclient_scm.CaptureGitStatus([root], upstream_branch)
 | 
| -    issue = Backquote(['git', 'cl', 'status', '--field=id'])
 | 
| -    patchset = None
 | 
| -    self.change = presubmit_support.GitChange(name, description, root, files,
 | 
| -                                              issue, patchset)
 | 
| -
 | 
| -
 | 
|  # Ensure we were called with the necessary number of arguments.
 | 
|  program_name = os.path.basename(sys.argv[0])
 | 
| -if len(sys.argv) < 2:
 | 
| +if len(sys.argv) != 2:
 | 
|    raise Exception("usage: %s [upstream branch]" % program_name)
 | 
|  
 | 
| -# Get arguments from how we were called.
 | 
| -commit = (program_name == 'pre-cl-dcommit')
 | 
| -upstream_branch = sys.argv[1]
 | 
| -
 | 
| -# Create our options based on the command-line args and the current checkout.
 | 
| -options = ChangeOptions(commit=commit, upstream_branch=upstream_branch)
 | 
| -
 | 
| -# Run the presubmit checks.
 | 
| -if presubmit_support.DoPresubmitChecks(options.change,
 | 
| -                                       options.commit,
 | 
| -                                       options.verbose,
 | 
| -                                       sys.stdout,
 | 
| -                                       sys.stdin,
 | 
| -                                       options.default_presubmit,
 | 
| -                                       options.may_prompt):
 | 
| -  sys.exit(0)
 | 
| -else:
 | 
| -  sys.exit(1)
 | 
| +# Run the hooks library with our arguments.
 | 
| +exec git_cl_hooks.RunHooks(hook_name=program_name, upstream_branch=sys.argv[1])
 | 
| 
 |