diff --git a/aider/diffs.py b/aider/diffs.py index 621d60c4c..9a0bae9a7 100644 --- a/aider/diffs.py +++ b/aider/diffs.py @@ -1,23 +1,48 @@ -import sys import difflib +import sys + +from .dump import dump + def main(): if len(sys.argv) != 3: - print("Usage: python diffs.py file1 file2") + print("Usage: python diffs.py file1 file") sys.exit(1) - file1, file2 = sys.argv[1], sys.argv[2] + file_orig, file_updated = sys.argv[1], sys.argv[2] - with open(file1, 'r') as f1: - content1 = f1.readlines() + with open(file_orig, "r") as f: + lines_orig = f.readlines() - with open(file2, 'r') as f2: - content2 = f2.readlines() + with open(file_updated, "r") as f: + lines_updated = f.readlines() - differences = list(difflib.unified_diff(content1, content2, fromfile=file1, tofile=file2)) + diff = list(difflib.ndiff(lines_orig, lines_updated)) + + # Mapping between the line numbers + mapping = {} + + num_orig, num_updated = 0, 0 + last_non_deleted_orig = 0 + + for line in diff: + print(f"{num_orig:2d} {num_updated:2d} {line}", end="") + code = line[0] + if code == " ": + # lines are the same in both files + mapping[num_orig] = num_updated + num_orig += 1 + num_updated += 1 + last_non_deleted_orig = num_orig + elif code == "-": + # line only in file_orig + num_orig += 1 + elif code == "+": + # line only in file_updated + num_updated += 1 + + dump(last_non_deleted_orig) - for line in differences: - sys.stdout.write(line) if __name__ == "__main__": main()