[oe-commits] [openembedded-core] 05/10: buildhistory-diff: add support for colourising the output

git at git.openembedded.org git at git.openembedded.org
Thu Jan 18 00:03:52 UTC 2018


This is an automated email from the git hooks/post-receive script.

rpurdie pushed a commit to branch master-next
in repository openembedded-core.

commit 4dae2865ba903c1d77436d9d233db7c42d092a21
Author: Ross Burton <ross.burton at intel.com>
AuthorDate: Wed Jan 17 17:11:33 2018 +0000

    buildhistory-diff: add support for colourising the output
    
    Colour value removes in red and additions in green, making it easier to scan the
    output for relevant changes.
    
    This adds a --colour option to specify whether colouring should be on, off, or
    detected.  The default is detected, and depends on whether stdout is a TTY (same
    behaviour as git).
    
    Signed-off-by: Ross Burton <ross.burton at intel.com>
    Signed-off-by: Richard Purdie <richard.purdie at linuxfoundation.org>
---
 meta/lib/oe/buildhistory_analysis.py | 30 +++++++++++++++++++++++++-----
 scripts/buildhistory-diff            |  9 +++++++--
 2 files changed, 32 insertions(+), 7 deletions(-)

diff --git a/meta/lib/oe/buildhistory_analysis.py b/meta/lib/oe/buildhistory_analysis.py
index 3e86a46..c05841b 100644
--- a/meta/lib/oe/buildhistory_analysis.py
+++ b/meta/lib/oe/buildhistory_analysis.py
@@ -40,6 +40,26 @@ related_fields['PKGSIZE'] = ['FILELIST']
 related_fields['files-in-image.txt'] = ['installed-package-names.txt', 'USER_CLASSES', 'IMAGE_CLASSES', 'ROOTFS_POSTPROCESS_COMMAND', 'IMAGE_POSTPROCESS_COMMAND']
 related_fields['installed-package-names.txt'] = ['IMAGE_FEATURES', 'IMAGE_LINGUAS', 'IMAGE_INSTALL', 'BAD_RECOMMENDATIONS', 'NO_RECOMMENDATIONS', 'PACKAGE_EXCLUDE']
 
+colours = {
+    'colour_default': '',
+    'colour_add':     '',
+    'colour_remove':  '',
+}
+
+def init_colours(use_colours):
+    global colours
+    if use_colours:
+        colours = {
+            'colour_default': '\033[0m',
+            'colour_add':     '\033[1;32m',
+            'colour_remove':  '\033[1;31m',
+        }
+    else:
+        colours = {
+            'colour_default': '',
+            'colour_add':     '',
+            'colour_remove':  '',
+        }
 
 class ChangeRecord:
     def __init__(self, path, fieldname, oldvalue, newvalue, monitored):
@@ -110,9 +130,9 @@ class ChangeRecord:
                     lines.append('removed all items "%s"' % ' '.join(removed))
                 else:
                     if removed:
-                        lines.append('removed "%s"' % ' '.join(removed))
+                        lines.append('removed "{colour_remove}{value}{colour_default}"'.format(value=' '.join(removed), **colours))
                     if added:
-                        lines.append('added "%s"' % ' '.join(added))
+                        lines.append('added "{colour_add}{value}{colour_default}"'.format(value=' '.join(added), **colours))
             else:
                 lines.append('changed order')
 
@@ -125,9 +145,9 @@ class ChangeRecord:
                 percentchg = ((bval - aval) / float(aval)) * 100
             else:
                 percentchg = 100
-            out = '%s changed from %s to %s (%s%d%%)' % (self.fieldname, self.oldvalue or "''", self.newvalue or "''", '+' if percentchg > 0 else '', percentchg)
+            out = '{} changed from {colour_remove}{}{colour_default} to {colour_add}{}{colour_default} ({}{:.0f}%)'.format(self.fieldname, self.oldvalue or "''", self.newvalue or "''", '+' if percentchg > 0 else '', percentchg, **colours)
         elif self.fieldname in defaultval_map:
-            out = '%s changed from %s to %s' % (self.fieldname, self.oldvalue, self.newvalue)
+            out = '{} changed from {colour_remove}{}{colour_default} to {colour_add}{}{colour_default}'.format(self.fieldname, self.oldvalue, self.newvalue, **colours)
             if self.fieldname == 'PKG' and '[default]' in self.newvalue:
                 out += ' - may indicate debian renaming failure'
         elif self.fieldname in ['pkg_preinst', 'pkg_postinst', 'pkg_prerm', 'pkg_postrm']:
@@ -163,7 +183,7 @@ class ChangeRecord:
             else:
                 out = ''
         else:
-            out = '%s changed from "%s" to "%s"' % (self.fieldname, self.oldvalue, self.newvalue)
+            out = '{} changed from "{colour_remove}{}{colour_default}" to "{colour_add}{}{colour_default}"'.format(self.fieldname, self.oldvalue, self.newvalue, **colours)
 
         if self.related:
             for chg in self.related:
diff --git a/scripts/buildhistory-diff b/scripts/buildhistory-diff
index e79cb7a..2797407 100755
--- a/scripts/buildhistory-diff
+++ b/scripts/buildhistory-diff
@@ -53,6 +53,10 @@ def get_args_parser():
     parser.add_argument('-e', '--exclude-path',
                         action='append',
                         help="Exclude path from the output")
+    parser.add_argument('-c', '--colour',
+                        choices=('yes', 'no', 'auto'),
+                        default="auto",
+                        help="Whether to colourise (defaults to auto)")
     parser.add_argument('revisions',
                         default = ['build-minus-1', 'HEAD'],
                         nargs='*',
@@ -107,10 +111,11 @@ def main():
     elif len(args.revisions) == 2:
         fromrev, torev = args.revisions
 
-    from oe.buildhistory_analysis import process_changes
-
+    from oe.buildhistory_analysis import init_colours, process_changes
     import gitdb
 
+    init_colours({"yes": True, "no": False, "auto": sys.stdout.isatty()}[args.colour])
+
     try:
         changes = process_changes(args.buildhistory_dir, fromrev, torev,
                                   args.report_all, args.report_ver, args.sigs,

-- 
To stop receiving notification emails like this one, please contact
the administrator of this repository.


More information about the Openembedded-commits mailing list