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
40
41
42
43
44
|
#!@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()
|