diff options
-rwxr-xr-x | scripts/buildhistory-diff | 19 | ||||
-rw-r--r-- | scripts/diff.html | 49 |
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> |