mirror of
https://github.com/thegeeklab/ansible-later.git
synced 2024-11-23 05:10:40 +00:00
69 lines
1.8 KiB
Plaintext
69 lines
1.8 KiB
Plaintext
|
#!/Users/rkau2905/Devel/python/private/ansible-later/env_27/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))
|