-
Notifications
You must be signed in to change notification settings - Fork 21
/
checkdiffs.py
80 lines (71 loc) · 2.59 KB
/
checkdiffs.py
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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
import sys
from itertools import zip_longest
from glob import glob
from tf.core.helpers import console
from tf.core.files import baseNm, splitExt
def checkDiffs(path1, path2):
"""Check differences between runs of TF generations.
"""
def diffFeature(f):
with open(f"{path1}/{f}.tf", encoding="utf8") as h:
eLines = (
h.readlines()
if f == "otext"
else (d for d in h.readlines() if not d.startswith("@"))
)
with open(f"{path2}/{f}.tf", encoding="utf8") as h:
nLines = (
h.readlines()
if f == "otext"
else (d for d in h.readlines() if not d.startswith("@"))
)
i = 0
equal = True
cutOff = 40
limit = 4
nUnequal = 0
for (e, n) in zip_longest(eLines, nLines, fillvalue="<empty>"):
i += 1
if e != n:
if nUnequal == 0:
console(
"differences{}".format(
"" if f == "otext" else " after the metadata"
)
)
shortE = e[0:cutOff] + (" ..." if len(e) > cutOff else "")
shortN = n[0:cutOff] + (" ..." if len(n) > cutOff else "")
console("\tline {:>6} OLD -->{}<--".format(i, shortE.rstrip("\n")))
console("\tline {:>6} NEW -->{}<--".format(i, shortN.rstrip("\n")))
equal = False
nUnequal += 1
if nUnequal >= limit:
break
console("no changes" if equal else "")
console(f"Check differences between TF files in {path1} and {path2}")
files1 = glob(f"{path1}/*.tf")
files2 = glob(f"{path2}/*.tf")
features1 = {baseNm(splitExt(f)[0]) for f in files1}
features2 = {baseNm(splitExt(f)[0]) for f in files2}
addedOnes = features2 - features1
deletedOnes = features1 - features2
commonOnes = features2 & features1
if addedOnes:
console(f"\t{len(addedOnes)} features to add")
for f in sorted(addedOnes):
console(f"\t\t{f}")
else:
console("\tno features to add")
if deletedOnes:
console(f"\t{len(deletedOnes)} features to delete")
for f in sorted(deletedOnes):
console(f"\t\t{f}")
else:
console("\tno features to delete")
console(f"\t{len(commonOnes)} features in common")
for f in sorted(commonOnes):
console(f"{f}")
diffFeature(f)
console("Done")
if __name__ == "__main__":
checkDiffs(*sys.argv[1:3])