ansible-later/testenv/bin/unidiff
2019-04-23 13:04:27 +02:00

69 lines
1.8 KiB
Python
Executable File

#!/Users/rkau2905/Devel/python/private/ansible-later/testenv/bin/python
from __future__ import print_function, unicode_literals
import argparse
import codecs
import sys
from unidiff import DEFAULT_ENCODING, PatchSet
PY2 = sys.version_info[0] == 2
DESCRIPTION = """Unified diff metadata.
Examples:
$ git diff | unidiff
$ hg diff | unidiff --show-diff
$ unidiff -f patch.diff
"""
def get_parser():
parser = argparse.ArgumentParser(
formatter_class=argparse.RawDescriptionHelpFormatter,
description=DESCRIPTION)
parser.add_argument('--show-diff', action="store_true", default=False,
dest='show_diff', help='output diff to stdout')
parser.add_argument('-f', '--file', dest='diff_file',
type=argparse.FileType('r'),
help='if not specified, read diff data from stdin')
return parser
if __name__ == '__main__':
parser = get_parser()
args = parser.parse_args()
encoding = DEFAULT_ENCODING
if args.diff_file:
diff_file = args.diff_file
else:
encoding = sys.stdin.encoding or encoding
diff_file = sys.stdin
if PY2:
diff_file = codecs.getreader(encoding)(diff_file)
patch = PatchSet(diff_file)
if args.show_diff:
print(patch)
print()
print('Summary')
print('-------')
additions = 0
deletions = 0
for f in patch:
additions += f.added
deletions += f.removed
print('%s:' % f.path, '+%d additions,' % f.added,
'-%d deletions' % f.removed)
print()
print('%d modified file(s), %d added file(s), %d removed file(s)' % (
len(patch.modified_files), len(patch.added_files),
len(patch.removed_files)))
print('Total: %d addition(s), %d deletion(s)' % (additions, deletions))