1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
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 ()
|