File: mergeall-products/unzipped/docetc/Tools/post-diffall-auto-compare.py
"""
===========================================================================
Post-diffall file comparisons: a simple example of scraping filenames
from diffall.py's report, and a useful utility in general [3.3].
Automatically compare the files in all DIFFER lines in a diffall.py
final report, by running system commands to show detailed differences.
This is an alternative to manual copy/paste of the filenames in the
diffall report's '[...] - [...]' lines.
Run this in the same folder where diffall ran, unless all paths absolute.
Pass one arg: the name of a file where diffall.py's output has been saved.
This runs 'diff' commands on Unix and 'fc' commands on Windows for each
DIFFER line; the output is these commands' output, separated by '=' lines.
See ../../UserGuide.html for license and attribution.
===========================================================================
"""
import sys, re, os
file = sys.argv[1] # 1 arg = file with diffall's report section
differ = 'diff' if not sys.platform.startswith('win') else 'fc'
ndiffs = 0
for line in open(file, 'r'):
match = re.match('^.*DIFFER.*\[(.*)\] - \[(.*)\].*$', line)
if match:
ndiffs += 1
left, right = match.group(1), match.group(2)
print('\n\n', '='*80, sep='')
print('[%s] - [%s]' % (left, right))
os.system('%s %s %s' % (differ, left, right))
print('\nNumber diffs:', ndiffs)