From 59845ba9b3df5df775cf8c5a65d30375b984e3c7 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sat, 27 Apr 2024 18:08:26 +0200 Subject: Adding upstream version 3.68+deb11u1. Signed-off-by: Daniel Baumann --- listpackages.pl | 51 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100755 listpackages.pl (limited to 'listpackages.pl') diff --git a/listpackages.pl b/listpackages.pl new file mode 100755 index 0000000..c3b9fce --- /dev/null +++ b/listpackages.pl @@ -0,0 +1,51 @@ +#!/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; +} -- cgit v1.2.3