<!DOCTYPE html>
<html>
<head>
<title></title>
<style type="text/css">p.MsoNormal,p.MsoNoSpacing{margin:0}</style>
</head>
<body><div>After the email earlier about XEP dependencies I added a quick command to my XEP tool (<a href="https://bitbucket.org/mellium/xep/src">https://bitbucket.org/mellium/xep/src</a>) that would parse dependencies out of XEPs recursively and print them, optionally applying a template.<br></div>
<div><br></div>
<div>While exploring the dependencies of several XEPs I decided it might be nifty to visualize them and added a (slighly confusing) rule to the xeps repo makefile to do just that:<br></div>
<div><br></div>
<div>xep-%.svg: xep-%.xml<br></div>
<div>(   echo "digraph G {"; \<br></div>
<div>xep list -f '{{range .XEP}}{{printf `        "XEP-%04d" -> %q;\n` $$.Number .}}{{end}}' \<br></div>
<div>$$(xep list -f '{{range .Deps}}{{lower . | printf "%s.xml "}}{{end}}' $<) $<; \<br></div>
<div>xep list -f '{{range .Other}}{{printf `      "XEP-%04d" -> %q;\n` $$.Number .}}{{end}}' \<br></div>
<div>$$(xep list -f '{{range .Deps}}{{lower . | printf "%s.xml "}}{{end}}' $<) $<; \<br></div>
<div>echo "}"; \<br></div>
<div>) | dot -Tsvg -o $@<br></div>
<div><br></div>
<div>The TL;DR is that when my xep tool is installed the rule above spits out a dependency tree for any xep, eg. make xep-0163.svg produces:<br></div>
<div><br></div>
<div><br></div>
<div class="align-center" style="position: relative; margin: 1em 0px; text-align: center;" contenteditable="false"><img defang_data-imgid="inlineImage1518128390775" style="max-width: 100%; height: auto;" src="cid:1518128391.267916.fe88a55989c71f1985d75d593443ffce833add8c.280F5DAE@content.messagingengine.com"><br></div>
<div>(<a href="https://imgur.com/a/FNLt5">https://imgur.com/a/FNLt5)</a><br></div>
<div><br></div>
<div><br></div>
<div>It's fun to play with if nothing else. Maybe it will be useful to someone?<br></div>
<div><br></div>
<div>—Sam<br></div>
<div><br></div>
<div>--<br></div>
<div>Sam Whited<br></div>
<div>sam@samwhited.com<br></div>
</body>
</html>