sh:make-module-graph.sh
created 2025-10-20 modified 2025-10-20
make-module-graph.sh
#!/bin/bash
PNG_FILENAME=module-graph.png
put_header()
{
cat <<EOF
digraph G1 {
edge [len=2];
"(module A is using)" -> "(module B)";
EOF
}
put_trailer()
{
cat <<EOF
}
EOF
}
put_main()
{
while read MOD1 SIZE COUNT MOD2LIST
do
if [ -n "$MOD2LIST" ]
then
for MOD2 in $(echo $MOD2LIST| tr "," " ")
do
echo " $MOD2 -> $MOD1;"
done
else
echo " $MOD1;"
fi
done
}
put_dot()
{
put_header
lsmod \
| sed -e '1 d'\
| sort \
| put_main
put_trailer
}
main()
{
DOTCMD=/usr/bin/dot
#DOTCMD=/usr/bin/neato
put_dot \
| $DOTCMD -T png -o $PNG_FILENAME
}
main