Index: git_cl.py |
diff --git a/git_cl.py b/git_cl.py |
index f6c1ae7d7567f1b500676c1493d575b1ebcca583..d9e2d9803b0203d3203e61721d4e9b6fced0f616 100755 |
--- a/git_cl.py |
+++ b/git_cl.py |
@@ -80,15 +80,20 @@ def RunGit(args, **kwargs): |
return RunCommand(['git'] + args, **kwargs) |
-def RunGitWithCode(args): |
+def RunGitWithCode(args, suppress_stderr=False): |
"""Returns return code and stdout.""" |
try: |
env = os.environ.copy() |
# 'cat' is a magical git string that disables pagers on all platforms. |
env['GIT_PAGER'] = 'cat' |
+ if suppress_stderr: |
+ stderr = subprocess2.VOID |
+ else: |
+ stderr = sys.stderr |
out, code = subprocess2.communicate(['git'] + args, |
env=env, |
- stdout=subprocess2.PIPE) |
+ stdout=subprocess2.PIPE, |
+ stderr=stderr) |
return code, out[0] |
except ValueError: |
# When the subprocess fails, it returns None. That triggers a ValueError |
@@ -2301,7 +2306,10 @@ def CMDowners(parser, args): |
def CMDformat(parser, args): |
"""Runs clang-format on the diff.""" |
CLANG_EXTS = ['.cc', '.cpp', '.h'] |
- parser.add_option('--full', action='store_true', default=False) |
+ parser.add_option('--full', action='store_true', |
+ help='Reformat the full content of all touched files') |
+ parser.add_option('--dry-run', action='store_true', |
+ help='Don\'t modify any file on disk.') |
opts, args = parser.parse_args(args) |
if args: |
parser.error('Unrecognized args: %s' % ' '.join(args)) |
@@ -2358,8 +2366,10 @@ def CMDformat(parser, args): |
if not files: |
print "Nothing to format." |
return 0 |
- RunCommand([clang_format_tool, '-i'] + files, |
- cwd=top_dir) |
+ cmd = [clang_format_tool] |
+ if not opts.dry_run: |
+ cmd.append('-i') |
+ stdout = RunCommand(cmd + files, cwd=top_dir) |
else: |
env = os.environ.copy() |
env['PATH'] = os.path.dirname(clang_format_tool) |
@@ -2370,9 +2380,13 @@ def CMDformat(parser, args): |
except clang_format.NotFoundError, e: |
DieWithError(e) |
- cmd = [sys.executable, script, '-p0', '-i'] |
+ cmd = [sys.executable, script, '-p0'] |
+ if not opts.dry_run: |
+ cmd.append('-i') |
- RunCommand(cmd, stdin=diff_output, cwd=top_dir, env=env) |
+ stdout = RunCommand(cmd, stdin=diff_output, cwd=top_dir, env=env) |
+ if opts.dry_run and len(stdout) > 0: |
+ return 2 |
return 0 |