| #!/usr/bin/env python3 |
| |
| import sys |
| import difflib |
| import pprint |
| import os |
| |
| S8A = os.path.join(sys.argv[1], 's8a') |
| S8B = os.path.join(sys.argv[1], 's8b') |
| |
| assert os.path.exists(S8A), S8A |
| assert os.path.exists(S8B), S8B |
| |
| s8a_files = list(sorted(os.listdir(S8A))) |
| s8b_files = list(sorted(os.listdir(S8B))) |
| |
| toremove = [] |
| for f in s8b_files: |
| if f not in s8a_files: |
| continue |
| |
| if not f.endswith('.cor') and not f.endswith('.all'): |
| if ".cor" not in f and ".all" not in f: |
| print("Found in both:", f) |
| continue |
| |
| af = os.path.join(S8A, f) |
| bf = os.path.join(S8B, f) |
| |
| ac = open(af).readlines() |
| bc = open(bf).readlines() |
| |
| adds = [] |
| minus = [] |
| for l in list(difflib.unified_diff(ac, bc))[2:]: |
| if l[1] in ('*',): |
| continue |
| if l[0] in (' ','@'): |
| continue |
| if l[0] == '-': |
| minus.append(l[1:]) |
| elif l[0] == '+': |
| adds.append(l[1:]) |
| |
| assert not adds, (af, adds) |
| for m in minus: |
| if f.endswith('.all') and m.endswith('=0\n'): |
| continue |
| assert m.startswith('.include'), (af, m) |
| toremove.append(f) |
| |
| print() |
| print("Will remove") |
| print("-"*75) |
| pprint.pprint(toremove) |
| print("-"*75) |
| print() |
| |
| for fprefix in toremove: |
| for f in s8b_files: |
| if f.startswith(fprefix): |
| bf = os.path.join(S8B, f) |
| print("Removing", bf) |
| os.unlink(bf) |