#!/usr/bin/perl # # listpackages directory [field] # # This program spits out a list of all the packages listed in the tasks. # # If you go to auric, this command is then useful: # # for package in $(listpackages); do # madison -s testing -a "i386 all" $package >/dev/null || echo "No $package!" # done # # Or to see just key packages: # # listpackages tasks key my $dir=shift or die "no directory specified\n"; my @toshow=qw{packages-list key}; @toshow=@ARGV if @ARGV; use File::Find; find(\&processfile, $dir); sub processfile { my $file=$_; # File::Find craziness. $file eq 'po' && -d $file && ($File::Find::prune = 1); return if $File::Find::dir=~/\.(svn|git)/; return unless $file =~ /^[-+_.a-z0-9]+$/ and -f $file; open (IN, $file) or die "$file: $!"; my %fields; my $field=""; while () { chomp; next if /^\s*#/; s/#.*//; if (/^\s/) { $fields{$field}.="\n$_"; } else { ($field, my $value)=split(/:\s*/, $_, 2); $field=lc($field); $fields{$field}=$value; } } close IN; my @list; push @list, split(' ', $fields{$_}) foreach @toshow; print join("\n", @list)."\n" if @list; }