summaryrefslogtreecommitdiff
path: root/python
diff options
context:
space:
mode:
Diffstat (limited to 'python')
-rw-r--r--python/vyos/utils/file.py27
1 files changed, 27 insertions, 0 deletions
diff --git a/python/vyos/utils/file.py b/python/vyos/utils/file.py
index 98d88d9e4..6708ade2d 100644
--- a/python/vyos/utils/file.py
+++ b/python/vyos/utils/file.py
@@ -312,3 +312,30 @@ def move_recursive(src: str, dst: str, overwrite=False):
copy_recursive(src, dst, overwrite=overwrite)
shutil.rmtree(src)
+
+
+def file_compare(file1: str, file2: str) -> bool:
+ """
+ Compare two files modulo blank lines, leading/trailing whitespace, final
+ newline.
+
+ Returns:
+ bool: True if files are equivalent in the sense above.
+
+ """
+
+ def non_empty(line):
+ return bool(line.strip())
+
+ with open(file1) as f1, open(file2) as f2:
+ it1 = filter(non_empty, f1)
+ it2 = filter(non_empty, f2)
+
+ try:
+ for l1, l2 in zip(it1, it2, strict=True):
+ if l1.strip() != l2.strip():
+ return False
+ except ValueError:
+ return False
+
+ return True