streamlet/protocol.sh
branchv_0
changeset 3 03cd058c33ba
parent 0 4d5b3eda7be1
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/streamlet/protocol.sh	Sat Jan 11 18:06:58 2020 +0100
@@ -0,0 +1,38 @@
+#!/bin/bash
+
+read_nullbyte() { for v in "$@"; do export "$v"; read -r -d '' "$v"; done }
+
+# Warning: this script is unsafe and certain characters (which are perfectly legal in CSV values) might cause invalid DOT (GraphViz) streams. (you have been warned)
+
+nodes() {
+	cat messages.csv \
+		| relpipe-in-csv \
+		| relpipe-tr-cut '.*' 'message|sender' \
+		| relpipe-tr-sed '.*' 'sender' 'executor' 'coral' \
+		| relpipe-tr-sed '.*' 'sender' 'streamlet'  'gold2' \
+		| relpipe-out-nullbyte \
+		| while read_nullbyte message color; do echo "$message[style=\"filled,rounded\", fillcolor=$color];"; done
+	echo;
+}
+
+edges() {
+	cat protocol.csv \
+		| relpipe-in-csv \
+		| relpipe-out-nullbyte \
+		| while read_nullbyte from to label; do echo "$from -> $to [label=\"  $label\"];"; done
+}
+
+header() {
+	echo "digraph G {
+#rankdir=LR;
+node[shape=box, style=rounded, fontname=Ubuntu];
+start[shape=doublecircle];
+end[shape=doublecircle];
+";
+}
+
+footer() {
+	echo "}";
+}
+
+( header; nodes; edges; footer ) | dot -Tpdf > protocol.pdf