Home | History | Annotate | Line # | Download | only in rcorder
      1 #!/bin/sh
      2 # $NetBSD: rcorder-visualize.sh,v 1.5 2009/08/09 17:08:53 apb Exp $
      3 #
      4 # Written by Joerg Sonnenberger.  You may freely use and redistribute
      5 # this script.
      6 #
      7 # Simple script to show the dependency graph for rc scripts.
      8 # Output is in the dot(1) language and can be rendered using
      9 #	sh rcorder-visualize | dot -T svg -o rcorder.svg
     10 # dot(1) can be found in graphics/graphviz in pkgsrc.
     11 
     12 rc_files=${*:-/etc/rc.d/*}
     13 
     14 {
     15 echo ' digraph {'
     16 for f in $rc_files; do
     17 < $f awk '
     18 /# PROVIDE: /	{ provide = $3 }
     19 /# REQUIRE: /	{ for (i = 3; i <= NF; i++) requires[$i] = $i }
     20 /# BEFORE: /	{ for (i = 3; i <= NF; i++) befores[$i] = $i }
     21 
     22 END {
     23 	print "    \"" provide "\";"
     24 	for (x in requires) print "    \"" provide "\"->\"" x "\";"
     25 	for (x in befores) print "    \"" x "\"->\"" provide "\";"
     26 }
     27 '
     28 done
     29 echo '}'
     30 }
     31