| Index: git-cl-upload-hook
|
| ===================================================================
|
| --- git-cl-upload-hook (revision 0)
|
| +++ git-cl-upload-hook (revision 0)
|
| @@ -0,0 +1,75 @@
|
| +#!/usr/bin/python
|
| +# Copyright (c) 2009 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 os
|
| +import re
|
| +import subprocess
|
| +import sys
|
| +
|
| +# Find depot_tools in PATH, append it to sys.path so we can import.
|
| +paths = os.environ.get("PATH")
|
| +for path in paths.split(':'):
|
| + if not path.endswith("depot_tools"):
|
| + continue
|
| + sys.path.append(path)
|
| + break
|
| +
|
| +import gclient_scm
|
| +import presubmit_support
|
| +
|
| +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:
|
| + 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)
|
|
|
| Property changes on: git-cl-upload-hook
|
| ___________________________________________________________________
|
| Added: svn:executable
|
| + *
|
|
|
|
|