equal
deleted
inserted
replaced
|
1 #!/bin/bash |
|
2 |
|
3 read_nullbyte() { for v in "$@"; do export "$v"; read -r -d '' "$v"; done } |
|
4 |
|
5 # 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) |
|
6 |
|
7 nodes() { |
|
8 cat messages.csv \ |
|
9 | relpipe-in-csv \ |
|
10 | relpipe-tr-cut '.*' 'message|sender' \ |
|
11 | relpipe-tr-sed '.*' 'sender' 'executor' 'coral' \ |
|
12 | relpipe-tr-sed '.*' 'sender' 'streamlet' 'gold2' \ |
|
13 | relpipe-out-nullbyte \ |
|
14 | while read_nullbyte message color; do echo "$message[style=\"filled,rounded\", fillcolor=$color];"; done |
|
15 echo; |
|
16 } |
|
17 |
|
18 edges() { |
|
19 cat protocol.csv \ |
|
20 | relpipe-in-csv \ |
|
21 | relpipe-out-nullbyte \ |
|
22 | while read_nullbyte from to label; do echo "$from -> $to [label=\" $label\"];"; done |
|
23 } |
|
24 |
|
25 header() { |
|
26 echo "digraph G { |
|
27 #rankdir=LR; |
|
28 node[shape=box, style=rounded, fontname=Ubuntu]; |
|
29 start[shape=doublecircle]; |
|
30 end[shape=doublecircle]; |
|
31 "; |
|
32 } |
|
33 |
|
34 footer() { |
|
35 echo "}"; |
|
36 } |
|
37 |
|
38 ( header; nodes; edges; footer ) | dot -Tpdf > protocol.pdf |