3 # Copyright � 2012 Diego Elio Petten� <flameeyes@flameeyes.eu>
4 # Released under the 2-clause BSD license.
7 #deptree2dot > deptree.dot
8 #deptree2dot | dot -Tpng -o deptree.png
10 my $deptree = defined($ARGV[0]) ? $ARGV[0] : "/run/openrc/deptree";
12 open DEPTREE, $deptree or exit 1;
14 print "digraph deptree {\n";
18 while(my $line = readline(DEPTREE)) {
19 $line =~ /^depinfo_([0-9]+)_([a-z]+)(?:_[0-9]+)?='(.*)'\n$/;
22 my $value = $3; $value =~ s/[-\.:~]/_/g;
24 if ( $prop eq "service" ) {
25 $deptree[$index] = $value;
26 printf "%s [shape=box];\n", $value;
28 my $service = $deptree[$index];
30 if ( $prop eq "ineed" ) {
31 printf "%s -> %s;\n", $service, $value;
32 } elsif ( $prop eq "iuse" ) {
33 printf "%s -> %s [color=blue];\n", $service, $value;
34 } elsif ( $prop eq "ibefore" ) {
35 printf "%s -> %s [style=dotted];\n", $service, $value;
36 } elsif ( $prop eq "iafter" ) {
37 printf "%s -> %s [style=dotted color=purple];\n", $value, $service;
38 } elsif ( $prop eq "iprovide" ) {
39 printf "%s -> %s [color=red];\n", $value, $service;