1#!/bin/sh
2# $NetBSD: rcorder-visualize.sh,v 1.4 2009/04/15 23:03:34 joerg 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
12rc_files=${*:-/etc/rc.d/*}
13
14{
15echo ' digraph {'
16for 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
22END {
23	print "    \"" provide "\";"
24	for (x in requires) print "    \"" provide "\"->\"" x "\";"
25	for (x in befores) print "    \"" x "\"->\"" provide "\";"
26}
27'
28done
29echo '}'
30}
31