diff options
author | Ross Burton <ross.burton@intel.com> | 2018-01-17 17:11:33 +0000 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2018-01-18 12:50:37 +0000 |
commit | 1c88db7a1c071fa00bcbba14c89e1c54b21c1948 (patch) | |
tree | 1c5e8be698d5b643df59e22a101fdc965beb99e3 /meta/lib/oe | |
parent | c1058ac4f2441e017098a1a4f27bbecb407bb3a8 (diff) | |
download | poky-1c88db7a1c071fa00bcbba14c89e1c54b21c1948.tar.gz |
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).
(From OE-Core rev: 4208f1546c92f069e432d1865269ce539db8cea7)
Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta/lib/oe')
-rw-r--r-- | meta/lib/oe/buildhistory_analysis.py | 30 |
1 files changed, 25 insertions, 5 deletions
diff --git a/meta/lib/oe/buildhistory_analysis.py b/meta/lib/oe/buildhistory_analysis.py index 3e86a46a3f..c05841b804 100644 --- a/meta/lib/oe/buildhistory_analysis.py +++ b/meta/lib/oe/buildhistory_analysis.py | |||
@@ -40,6 +40,26 @@ related_fields['PKGSIZE'] = ['FILELIST'] | |||
40 | related_fields['files-in-image.txt'] = ['installed-package-names.txt', 'USER_CLASSES', 'IMAGE_CLASSES', 'ROOTFS_POSTPROCESS_COMMAND', 'IMAGE_POSTPROCESS_COMMAND'] | 40 | related_fields['files-in-image.txt'] = ['installed-package-names.txt', 'USER_CLASSES', 'IMAGE_CLASSES', 'ROOTFS_POSTPROCESS_COMMAND', 'IMAGE_POSTPROCESS_COMMAND'] |
41 | related_fields['installed-package-names.txt'] = ['IMAGE_FEATURES', 'IMAGE_LINGUAS', 'IMAGE_INSTALL', 'BAD_RECOMMENDATIONS', 'NO_RECOMMENDATIONS', 'PACKAGE_EXCLUDE'] | 41 | related_fields['installed-package-names.txt'] = ['IMAGE_FEATURES', 'IMAGE_LINGUAS', 'IMAGE_INSTALL', 'BAD_RECOMMENDATIONS', 'NO_RECOMMENDATIONS', 'PACKAGE_EXCLUDE'] |
42 | 42 | ||
43 | colours = { | ||
44 | 'colour_default': '', | ||
45 | 'colour_add': '', | ||
46 | 'colour_remove': '', | ||
47 | } | ||
48 | |||
49 | def init_colours(use_colours): | ||
50 | global colours | ||
51 | if use_colours: | ||
52 | colours = { | ||
53 | 'colour_default': '\033[0m', | ||
54 | 'colour_add': '\033[1;32m', | ||
55 | 'colour_remove': '\033[1;31m', | ||
56 | } | ||
57 | else: | ||
58 | colours = { | ||
59 | 'colour_default': '', | ||
60 | 'colour_add': '', | ||
61 | 'colour_remove': '', | ||
62 | } | ||
43 | 63 | ||
44 | class ChangeRecord: | 64 | class ChangeRecord: |
45 | def __init__(self, path, fieldname, oldvalue, newvalue, monitored): | 65 | def __init__(self, path, fieldname, oldvalue, newvalue, monitored): |
@@ -110,9 +130,9 @@ class ChangeRecord: | |||
110 | lines.append('removed all items "%s"' % ' '.join(removed)) | 130 | lines.append('removed all items "%s"' % ' '.join(removed)) |
111 | else: | 131 | else: |
112 | if removed: | 132 | if removed: |
113 | lines.append('removed "%s"' % ' '.join(removed)) | 133 | lines.append('removed "{colour_remove}{value}{colour_default}"'.format(value=' '.join(removed), **colours)) |
114 | if added: | 134 | if added: |
115 | lines.append('added "%s"' % ' '.join(added)) | 135 | lines.append('added "{colour_add}{value}{colour_default}"'.format(value=' '.join(added), **colours)) |
116 | else: | 136 | else: |
117 | lines.append('changed order') | 137 | lines.append('changed order') |
118 | 138 | ||
@@ -125,9 +145,9 @@ class ChangeRecord: | |||
125 | percentchg = ((bval - aval) / float(aval)) * 100 | 145 | percentchg = ((bval - aval) / float(aval)) * 100 |
126 | else: | 146 | else: |
127 | percentchg = 100 | 147 | percentchg = 100 |
128 | out = '%s changed from %s to %s (%s%d%%)' % (self.fieldname, self.oldvalue or "''", self.newvalue or "''", '+' if percentchg > 0 else '', percentchg) | 148 | 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) |
129 | elif self.fieldname in defaultval_map: | 149 | elif self.fieldname in defaultval_map: |
130 | out = '%s changed from %s to %s' % (self.fieldname, self.oldvalue, self.newvalue) | 150 | out = '{} changed from {colour_remove}{}{colour_default} to {colour_add}{}{colour_default}'.format(self.fieldname, self.oldvalue, self.newvalue, **colours) |
131 | if self.fieldname == 'PKG' and '[default]' in self.newvalue: | 151 | if self.fieldname == 'PKG' and '[default]' in self.newvalue: |
132 | out += ' - may indicate debian renaming failure' | 152 | out += ' - may indicate debian renaming failure' |
133 | elif self.fieldname in ['pkg_preinst', 'pkg_postinst', 'pkg_prerm', 'pkg_postrm']: | 153 | elif self.fieldname in ['pkg_preinst', 'pkg_postinst', 'pkg_prerm', 'pkg_postrm']: |
@@ -163,7 +183,7 @@ class ChangeRecord: | |||
163 | else: | 183 | else: |
164 | out = '' | 184 | out = '' |
165 | else: | 185 | else: |
166 | out = '%s changed from "%s" to "%s"' % (self.fieldname, self.oldvalue, self.newvalue) | 186 | out = '{} changed from "{colour_remove}{}{colour_default}" to "{colour_add}{}{colour_default}"'.format(self.fieldname, self.oldvalue, self.newvalue, **colours) |
167 | 187 | ||
168 | if self.related: | 188 | if self.related: |
169 | for chg in self.related: | 189 | for chg in self.related: |