summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xscripts/buildhistory-diff19
-rw-r--r--scripts/diff.html49
2 files changed, 64 insertions, 4 deletions
diff --git a/scripts/buildhistory-diff b/scripts/buildhistory-diff
index 3c987d19cd3..8e201c75bb2 100755
--- a/scripts/buildhistory-diff
+++ b/scripts/buildhistory-diff
@@ -238,6 +238,14 @@ def str_pretty(chg):
return '%s%s' % (prefix, out) if out else ''
+def html(changes):
+ import jinja2
+ loader = jinja2.FileSystemLoader("/home/ross/Yocto/poky/scripts")
+ env = jinja2.Environment(loader=loader, autoescape=jinja2.select_autoescape())
+ template = env.get_template("diff.html")
+
+ differ = difflib.Differ()
+ print(template.render(changes=changes, differ=differ))
def main():
@@ -277,10 +285,13 @@ def main():
sys.stderr.write('Specified git revision "%s" is not valid\n' % e.args[0])
sys.exit(1)
- for chg in changes:
- out = str_pretty(chg)
- if out:
- print(out)
+ if True:
+ html(changes)
+ else:
+ for chg in changes:
+ out = str_pretty(chg)
+ if out:
+ print(out)
sys.exit(0)
diff --git a/scripts/diff.html b/scripts/diff.html
new file mode 100644
index 00000000000..92419939bcc
--- /dev/null
+++ b/scripts/diff.html
@@ -0,0 +1,49 @@
+{% macro file_change(change) %}
+ {% if change.changetype == change.ChangeType.ADD %}
+ <tt>{{change.path}}</tt> was added</tt>
+ {% elif change.changetype == change.ChangeType.REMOVE %}
+ <tt>{{change.path}}</tt> was removed</tt>
+ {% elif change.changetype == change.ChangeType.LINK %}
+ <tt>{{change.path}}</tt> changed symlink target from <tt>{{change.oldvalue}}</tt> to <tt>{{change.newvalue}}</tt>
+ {% elif change.changetype == change.ChangeType.MOVE %}
+ <tt>{{change.path}}</tt> moved to <tt>{{change.oldvalue}}</tt>
+ {% else %}
+ Unhandled {{change.changetype}}
+ {% endif %}
+{% endmacro %}
+
+<!DOCTYPE html>
+<html>
+ <body>
+ <h2>Changes</h2>
+ <ul>
+ {% for path, changes in changes|groupby("path") %}
+ <li><a href="#path-{{path}}">{{path}}</a></li>
+ {% endfor %}
+ </ul>
+
+ <hr>
+
+ {% for path, changes in changes|groupby("path") %}
+ <h3 id="path-{{path}}">{{path}}</h3>
+ <ul>
+ {% for change in changes %}
+ <li>{{change.fieldname}}</li>
+
+ {% if change.oldvalue or change.newvalue %}
+ <pre>{{"\n".join(differ.compare(change.oldvalue.splitlines(), change.newvalue.splitlines()))}}</pre>
+ {% endif %}
+
+ {% if change.filechanges %}
+ <ul>
+ {% for c in change.filechanges %}
+ <li>{{file_change(c)}}</li>
+ {% endfor %}
+ </ul>
+ {% endif %}
+ {% endfor %}
+ </ul>
+ {% endfor %}
+ </ul>
+ </body>
+</html>