diff options
Diffstat (limited to 'ports-mgmt/portlint/src/portlintgrep.pl')
-rw-r--r-- | ports-mgmt/portlint/src/portlintgrep.pl | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/ports-mgmt/portlint/src/portlintgrep.pl b/ports-mgmt/portlint/src/portlintgrep.pl new file mode 100644 index 000000000000..1bf267e0988d --- /dev/null +++ b/ports-mgmt/portlint/src/portlintgrep.pl @@ -0,0 +1,53 @@ +#!/usr/bin/perl +# +# Copyright (c) 2003 Oliver Eikemeier. All rights reserved. +# +# BSD licensed. +# + +# +# List all the ports with FATAL errors: +# +# portlintgrep ^FATAL: +# + +require 5.005; +use diagnostics; +use strict; +use Carp; + +my $make = $ENV{MAKE} ? $ENV{MAKE} : '/usr/bin/make'; +my $portlint = $ENV{PORTLINT} ? $ENV{PORTLINT} : '/usr/local/bin/portlint'; +my $portsdir = $ENV{PORTSDIR} ? $ENV{PORTSDIR} : '/usr/ports'; +my $portlint_args = $ENV{PORTLINT_ARGS} ? $ENV{PORTLINT_ARGS} : ''; + +die "Usage: portlintgrep <regex>\n" if $#ARGV != 0; +my $regex = qr/$ARGV[0]/; + +my %failedports; + +my @categories = split ' ', `cd $portsdir; $make -VSUBDIR`; +foreach my $category (@categories) { + my @ports = split ' ', `cd "$portsdir/$category"; $make -VSUBDIR`; + foreach my $port (@ports) { + my @result = + `cd "$portsdir/$category/$port"; $portlint $portlint_args`; + map chomp, @result; + my @filteredresult = grep /$regex/o, @result; + if (@filteredresult) { + my $maintainer = + `cd "$portsdir/$category/$port"; $make -VMAINTAINER`; + chomp $maintainer; + push @{$failedports{$maintainer}}, "$category/$port"; + print join("\n ", + "$category/$port <$maintainer>:", + @filteredresult), + "\n"; + } + } +} + +print "\nPorts sorted by maintainer:\n"; +foreach my $maintainer (sort { lc $a cmp lc $b } keys %failedports) { + print join("\n - ", $maintainer, @{$failedports{$maintainer}}), "\n"; +} |