diff mbox

[v2,4/8] tools: moveconfig: show result of header cleaning in unified diff

Message ID 1469441729-5817-5-git-send-email-yamada.masahiro@socionext.com
State New
Headers show

Commit Message

Masahiro Yamada July 25, 2016, 10:15 a.m. UTC
The header cleanup feature of this tool now removes empty ifdef's,
successive blank lines as well as moved option defines.  So, we
want to see a little more context to check which lines were deleted.

It is true that we can see it by "git diff", but it would not work
in the --dry-run mode.  So, here, this commit.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

---

Changes in v2:
  - Make diffing into a helper function

 tools/moveconfig.py | 30 +++++++++++++++++++++++++-----
 1 file changed, 25 insertions(+), 5 deletions(-)

-- 
1.9.1

_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot
diff mbox

Patch

diff --git a/tools/moveconfig.py b/tools/moveconfig.py
index 03e4953..4f07782 100755
--- a/tools/moveconfig.py
+++ b/tools/moveconfig.py
@@ -161,6 +161,7 @@  To see the complete list of supported options, run
 """
 
 import copy
+import difflib
 import filecmp
 import fnmatch
 import multiprocessing
@@ -275,6 +276,22 @@  def color_text(color_enabled, color, string):
     else:
         return string
 
+def show_diff(a, b, file_path):
+    """Show unidified diff.
+
+    Arguments:
+      a: A list of lines (before)
+      b: A list of lines (after)
+      file_path: Path to the file
+    """
+
+    diff = difflib.unified_diff(a, b,
+                                fromfile=os.path.join('a', file_path),
+                                tofile=os.path.join('b', file_path))
+
+    for line in diff:
+        print line,
+
 def update_cross_compile(color_enabled):
     """Update per-arch CROSS_COMPILE via environment variables
 
@@ -414,16 +431,19 @@  def cleanup_one_header(header_path, patterns, dry_run):
         if matched == old_matched:
             break
 
-    for i in matched:
-        print '%s: %s: %s' % (header_path, i + 1, lines[i]),
+    tolines = copy.copy(lines)
+
+    for i in reversed(matched):
+        tolines.pop(i)
+
+    show_diff(lines, tolines, header_path)
 
     if dry_run:
         return
 
     with open(header_path, 'w') as f:
-        for i, line in enumerate(lines):
-            if not i in matched:
-                f.write(line)
+        for line in tolines:
+            f.write(line)
 
 def cleanup_headers(configs, dry_run):
     """Delete config defines from board headers.