Packets: Add packet diagrams
[senf.git] / senfscons / PkgDraw.py
diff --git a/senfscons/PkgDraw.py b/senfscons/PkgDraw.py
new file mode 100644 (file)
index 0000000..81309b2
--- /dev/null
@@ -0,0 +1,34 @@
+## \file
+# \brief PkgDraw builder
+
+## \package senfscons.PkgDraw
+# \brief Generate network packet diagram
+#
+# This builder will call pkgdraw to scan a header file and create network package diagrams
+# from SENF_PARSER macro calls.
+#
+# \par Construction Envrionment Variables:
+# <table class="senf">
+# <tr><td>\c PKGDRAWCOM</td><td>pkgdraw command, defaults to \c #/doclib/pkgdraw</td></tr>
+# <tr><td>\c PKGDRAWPACKETS</td><td>list packet types to include in
+#            the diagram, defaults to empty (include all packets)</td></tr>
+# </table>
+#
+# \ingroup builder
+
+import os
+import SCons.Builder, SCons.Action
+
+PkgDraw = SCons.Builder.Builder(
+    suffix = ".png",
+    src_suffix = ".hh",
+    action = SCons.Action.Action("$PKGDRAWCOM $PKGDRAWPACKETS <$SOURCE >$TARGET"),
+    single_source = 1)
+
+def generate(env):
+    env['BUILDERS']['PkgDraw'] = PkgDraw
+    env['PKGDRAWCOM'] = env.Dir('#').abspath + "/doclib/pkgdraw"
+    env['PKGDRAWPACKETS'] = ''
+
+def exists(env):
+    return env.Detect("#/doclib/pkgdraw")