All pastes #742463 Raw Edit

perl script to parse dot files

public text v1 · immutable
·published 2007-10-19 15:14 UTC
rendered paste body
#!/usr/bin/perl

use warnings;
use strict;

my $item  = $ARGV[0] or die "Usage: $0 <package-name>\n";
my $debug = 0;

open my $dot,'<', "depends.dot"
    or die "Cannot open database: $!\n";

while (<$dot>) {
    chomp;
    next unless (m/(.*)\ \-\>\ (.*)/);
    print "Got one! $_\n" if $debug;
    
    my ($lh, $rh) = ($1, $2);

    if ($item eq $lh) {
        print "$rh depends upon $item\n" if $debug;;
        push(@depends_upon, $rh);
    } elsif ($item eq $rh) {
        print "$lh is a dependency of $item\n" if $debug;
        push(@dependency_of, $lh);
    }
}

print "$item is a dependency of ", join(',', sort(@dependency_of)), "\n";
print "$item depends upon ", join(',', sort(@depends_upon)), "\n";

0;

# digraph depends {
# "patch-native" -> ERROR
# "quilt-native" [label="quilt-native\n0.45-r0"]
# "quilt-native" -> "patch-native"
# "ipkg-utils-native" [label="ipkg-utils-native\n1.6+cvs20050404-r8"]
# "ipkg-utils-native" -> "quilt-native"