# HG changeset patch # User Paul Boddie # Date 1619913165 -7200 # Node ID 241cef280252c5a263cfa313b00637bff8c39a21 # Parent e44c8db8ee3f3f43152e7f31bc8616d90352ca51 Tidied, introducing functions, and adding node definitions and colouring. diff -r e44c8db8ee3f -r 241cef280252 docs/tools/depgraph --- a/docs/tools/depgraph Sat May 01 23:51:50 2021 +0200 +++ b/docs/tools/depgraph Sun May 02 01:52:45 2021 +0200 @@ -20,6 +20,39 @@ fi } +# Filter library headers. + +filter_libraries() +{ + grep -v '\|\|\|' +} + +# Select basenames in search result filenames. + +select_basenames() +{ + sed 's/[^:]*\/\([^:]*\)/\1/' +} + +# Colour nodes by source category. + +colour_sources() +{ + sed '/files/s/$/ [style=filled,fillcolor="#ffdddd"]/' \ + | sed '/pipes/s/$/ [style=filled,fillcolor="#ddddff"]/' \ + | sed '/mapping/s/$/ [style=filled,fillcolor="#ddffdd"]/' \ + | sed '/pages/s/$/ [style=filled,fillcolor="#ddffff"]/' \ + | sed '/libmem/s/$/ [style=filled,fillcolor="#dddddd"]/' +} + +# Remove this directory as prefix. + +remove_prefix() +{ + QUOTED=`echo "$PKGDIR" | sed 's/\//\\\\\//g'` + sed "s/^${QUOTED}\///" +} + # Main program. @@ -44,6 +77,18 @@ EOF +# Generate nodes using source filenames to permit categorisation-based node +# colouring. + + find $SOURCES -maxdepth 4 -name '*.cc' \ +| filter_interfaces \ +| remove_prefix \ +| colour_sources \ +| select_basenames \ +| sed 's/\.cc//' \ +| sed 's/$/;/' \ +>> "$DOTFILE" + # Generate header file relationships. # Find header files. # Obtain include statements. @@ -55,8 +100,8 @@ find $SOURCES -maxdepth 4 -name '*.h' \ | xargs -I{} grep -H include '{}' \ | filter_interfaces \ -| grep -v '\|\|\|' \ -| sed 's/[^:]*\/\([^:]*\)/\1/' \ +| filter_libraries \ +| select_basenames \ | sed 's/<.*\///g;s///g;s/"//g;s/\.h//g;s/:#include / -> /;s/^/ /;s/$/;/' \ >> "$DOTFILE"