xref: /freebsd/sbin/rcorder/rcorder-visualize.sh (revision d0b2dbfa0ecf2bbc9709efc5e20baf8e4b44bbbf)
1*28300986SEric van Gyzen#!/bin/sh
2*28300986SEric van Gyzen# $NetBSD: rcorder-visualize.sh,v 1.5 2009/08/09 17:08:53 apb Exp $
3*28300986SEric van Gyzen#
4*28300986SEric van Gyzen# Copyright (c) 2009 by Joerg Sonnenberger
5*28300986SEric van Gyzen# All rights reserved.
6*28300986SEric van Gyzen#
7*28300986SEric van Gyzen# Redistribution and use in source and binary forms, with or without
8*28300986SEric van Gyzen# modification, are permitted provided that the following conditions
9*28300986SEric van Gyzen# are met:
10*28300986SEric van Gyzen# 1. Redistributions of source code must retain the above copyright
11*28300986SEric van Gyzen#    notice, this list of conditions and the following disclaimer.
12*28300986SEric van Gyzen# 2. Redistributions in binary form must reproduce the above copyright
13*28300986SEric van Gyzen#    notice, this list of conditions and the following disclaimer in the
14*28300986SEric van Gyzen#    documentation and/or other materials provided with the distribution.
15*28300986SEric van Gyzen#
16*28300986SEric van Gyzen# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
17*28300986SEric van Gyzen# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
18*28300986SEric van Gyzen# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
19*28300986SEric van Gyzen# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
20*28300986SEric van Gyzen# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
21*28300986SEric van Gyzen# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
22*28300986SEric van Gyzen# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
23*28300986SEric van Gyzen# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24*28300986SEric van Gyzen# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
25*28300986SEric van Gyzen# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26*28300986SEric van Gyzen#
27*28300986SEric van Gyzen#
28*28300986SEric van Gyzen# Simple script to show the dependency graph for rc scripts.
29*28300986SEric van Gyzen# Output is in the dot(1) language and can be rendered using
30*28300986SEric van Gyzen#	sh rcorder-visualize | dot -T svg -o rcorder.svg
31*28300986SEric van Gyzen# dot(1) can be found in graphics/graphviz in pkgsrc.
32*28300986SEric van Gyzen
33*28300986SEric van Gyzenrc_files=${*:-/etc/rc.d/*}
34*28300986SEric van Gyzen
35*28300986SEric van Gyzen{
36*28300986SEric van Gyzenecho ' digraph {'
37*28300986SEric van Gyzenfor f in $rc_files; do
38*28300986SEric van Gyzen< $f awk '
39*28300986SEric van Gyzen/# PROVIDE: /	{ provide = $3 }
40*28300986SEric van Gyzen/# REQUIRE: /	{ for (i = 3; i <= NF; i++) requires[$i] = $i }
41*28300986SEric van Gyzen/# BEFORE: /	{ for (i = 3; i <= NF; i++) befores[$i] = $i }
42*28300986SEric van Gyzen
43*28300986SEric van GyzenEND {
44*28300986SEric van Gyzen	print "    \"" provide "\";"
45*28300986SEric van Gyzen	for (x in requires) print "    \"" provide "\"->\"" x "\";"
46*28300986SEric van Gyzen	for (x in befores) print "    \"" x "\"->\"" provide "\";"
47*28300986SEric van Gyzen}
48*28300986SEric van Gyzen'
49*28300986SEric van Gyzendone
50*28300986SEric van Gyzenecho '}'
51*28300986SEric van Gyzen}
52