diff options
Diffstat (limited to 'contrib/pydiffer.py.in')
-rw-r--r-- | contrib/pydiffer.py.in | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/contrib/pydiffer.py.in b/contrib/pydiffer.py.in new file mode 100644 index 0000000..23d546b --- /dev/null +++ b/contrib/pydiffer.py.in @@ -0,0 +1,39 @@ +#!@PYTHON@ +import os +import sys +import difflib +import filecmp + +def getdiff (old, new): + diff = [] + with open (old) as a: + with open (new) as b: + for l in difflib.unified_diff (a.read ().splitlines (), b.read ().splitlines ()): + diff.append (l) + return diff + +def dc_getdiff (dc, old, new): + diff = [] + for f in dc.left_only: + diff.append ("Only in {}: {}".format (old, f)) + for f in dc.right_only: + diff.append ("Only in {}: {}".format (new, f)) + for f in dc.diff_files: + r = getdiff (os.path.join (old, f), os.path.join (new, f)) + diff.extend (r) + for dn, dc in dc.subdirs.items (): + r = dc_getdiff (dc, os.path.join (old, dn), os.path.join (new, dn)) + diff.extend (r) + return diff + +def dcdiff (old, new): + dc = filecmp.dircmp (old, new) + diff = dc_getdiff (dc, old, new) + return diff + +def main (): + for l in dcdiff (sys.argv[1], sys.argv[2]): + print (l) + +if __name__ == '__main__': + main () |