forked from OSchip/llvm-project
Changed clang-format-diff.py to output diff by default. Added -i option to apply changes to files instead.
Summary: "svn diff|clang-format-diff.py" will just output the diff. Now it's possible to use: svn diff|clang-format-diff.py|patch -p0 as an equivalent to: svn diff|clang-format-diff.py -i ;) Reviewers: djasper Reviewed By: djasper CC: cfe-commits Differential Revision: http://llvm-reviews.chandlerc.com/D1840 llvm-svn: 192505
This commit is contained in:
parent
7bb1344c67
commit
95c009afd9
|
@ -17,13 +17,16 @@ This script reads input from a unified diff and reformats all the changed
|
|||
lines. This is useful to reformat all the lines touched by a specific patch.
|
||||
Example usage for git users:
|
||||
|
||||
git diff -U0 HEAD^ | clang-format-diff.py -p1
|
||||
git diff -U0 HEAD^ | clang-format-diff.py -p1 -i
|
||||
|
||||
"""
|
||||
|
||||
import argparse
|
||||
import difflib
|
||||
import re
|
||||
import string
|
||||
import subprocess
|
||||
import StringIO
|
||||
import sys
|
||||
|
||||
|
||||
|
@ -33,7 +36,11 @@ binary = 'clang-format'
|
|||
|
||||
def main():
|
||||
parser = argparse.ArgumentParser(description=
|
||||
'Reformat changed lines in diff.')
|
||||
'Reformat changed lines in diff. Without -i '
|
||||
'option just output the diff that would be'
|
||||
'introduced.')
|
||||
parser.add_argument('-i', action='store_true', default=False,
|
||||
help='apply edits to files instead of displaying a diff')
|
||||
parser.add_argument('-p', default=0,
|
||||
help='strip the smallest prefix containing P slashes')
|
||||
parser.add_argument(
|
||||
|
@ -71,7 +78,9 @@ def main():
|
|||
|
||||
# Reformat files containing changes in place.
|
||||
for filename, lines in lines_by_file.iteritems():
|
||||
command = [binary, '-i', filename]
|
||||
command = [binary, filename]
|
||||
if args.i:
|
||||
command.append('-i')
|
||||
command.extend(lines)
|
||||
if args.style:
|
||||
command.extend(['-style', args.style])
|
||||
|
@ -84,6 +93,16 @@ def main():
|
|||
if p.returncode != 0:
|
||||
sys.exit(p.returncode);
|
||||
|
||||
if not args.i:
|
||||
with open(filename) as f:
|
||||
code = f.readlines()
|
||||
formatted_code = StringIO.StringIO(stdout).readlines()
|
||||
diff = difflib.unified_diff(code, formatted_code,
|
||||
filename, filename,
|
||||
'(before formatting)', '(after formatting)')
|
||||
diff_string = string.join(diff, '')
|
||||
if len(diff_string) > 0:
|
||||
print diff_string
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
|
|
Loading…
Reference in New Issue