Commit b1cb0077 authored by John Koleszar's avatar John Koleszar
Browse files

lint-hunks: support operating on arbirary revs

Rather than diffing only the index, support checking arbitrary commits.

Change-Id: Ia135a487990d8293d1e0799dc062b9f49e020b25
parent 9443f05e
...@@ -21,7 +21,8 @@ SHORT_OPTIONS = "h" ...@@ -21,7 +21,8 @@ SHORT_OPTIONS = "h"
LONG_OPTIONS = ["help"] LONG_OPTIONS = ["help"]
TOPLEVEL_CMD = ["git", "rev-parse", "--show-toplevel"] TOPLEVEL_CMD = ["git", "rev-parse", "--show-toplevel"]
DIFF_CMD = ["git", "diff-index", "-u", "--cached", "HEAD", "--"] DIFF_CMD = ["git", "diff"]
DIFF_INDEX_CMD = ["git", "diff-index", "-u", "--cached", "HEAD", "--"]
SHOW_CMD = ["git", "show"] SHOW_CMD = ["git", "show"]
CPPLINT_FILTERS = ["-readability/casting", "-runtime/int"] CPPLINT_FILTERS = ["-readability/casting", "-runtime/int"]
...@@ -61,7 +62,7 @@ def main(argv=None): ...@@ -61,7 +62,7 @@ def main(argv=None):
argv = sys.argv argv = sys.argv
try: try:
try: try:
opts, _ = getopt.getopt(argv[1:], SHORT_OPTIONS, LONG_OPTIONS) opts, args = getopt.getopt(argv[1:], SHORT_OPTIONS, LONG_OPTIONS)
except getopt.error, msg: except getopt.error, msg:
raise Usage(msg) raise Usage(msg)
...@@ -71,10 +72,20 @@ def main(argv=None): ...@@ -71,10 +72,20 @@ def main(argv=None):
print __doc__ print __doc__
sys.exit(0) sys.exit(0)
if args and len(args) > 1:
print __doc__
sys.exit(0)
# Find the fully qualified path to the root of the tree # Find the fully qualified path to the root of the tree
tl = Subprocess(TOPLEVEL_CMD, stdout=subprocess.PIPE) tl = Subprocess(TOPLEVEL_CMD, stdout=subprocess.PIPE)
tl = tl.communicate()[0].strip() tl = tl.communicate()[0].strip()
# See if we're working on the index or not.
if args:
diff_cmd = DIFF_CMD + [args[0] + "^!"]
else:
diff_cmd = DIFF_INDEX_CMD
# Build the command line to execute cpplint # Build the command line to execute cpplint
cpplint_cmd = [os.path.join(tl, "tools", "cpplint.py"), cpplint_cmd = [os.path.join(tl, "tools", "cpplint.py"),
"--filter=" + ",".join(CPPLINT_FILTERS), "--filter=" + ",".join(CPPLINT_FILTERS),
...@@ -82,7 +93,7 @@ def main(argv=None): ...@@ -82,7 +93,7 @@ def main(argv=None):
# Get a list of all affected lines # Get a list of all affected lines
file_affected_line_map = {} file_affected_line_map = {}
p = Subprocess(DIFF_CMD, stdout=subprocess.PIPE) p = Subprocess(diff_cmd, stdout=subprocess.PIPE)
stdout = p.communicate()[0] stdout = p.communicate()[0]
for hunk in diff.ParseDiffHunks(StringIO.StringIO(stdout)): for hunk in diff.ParseDiffHunks(StringIO.StringIO(stdout)):
filename = hunk.right.filename[2:] filename = hunk.right.filename[2:]
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment