X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=bin%2Fkeep-latest;h=ebc4fa9d7d048c7c03a002283ace2edf897cbdb4;hb=828a578320b9daa973d8b0c99e7b4474b9b0575b;hp=1aedc49959782175e9ca6815561d449c77484c40;hpb=1790031ba720b0389c5371ba8444a3fdb37ad511;p=wannabuild.git diff --git a/bin/keep-latest b/bin/keep-latest index 1aedc49..ebc4fa9 100755 --- a/bin/keep-latest +++ b/bin/keep-latest @@ -3,7 +3,7 @@ use strict; use warnings; -use lib '/org/wanna-build/bin'; +use lib '/org/wanna-build/lib'; use WannaBuild; # for version compare if (!@ARGV) { @@ -27,30 +27,48 @@ my %data; my $arch = shift @ARGV; -local($/) = ""; # read in paragraph mode -while (<>) { - my( $version, $name, $architecture ); - $architecture="none"; # better to keep an entry too much than to delete an entry - /^Package:\s*(\S+)$/mi and $name = $1; - /^Version:\s*(\S+)$/mi and $version = $1; - /^Architecture:\s*(\S+)$/mi and $architecture = $1; - if (!defined $name or !defined $version) { - warn "Stanza without Package or Version\n"; +#Read in all data files: +for my $file (@ARGV) { + if (! -f $file) { next; } - if ($arch ne "source" && defined $architecture && $architecture ne "all" && $architecture ne $arch) { - next; + my $fh; + if ($file =~ /.gz$/) { + open($fh, '-|', 'gzip', '-d', '-c', $file) + or die("Can't open pipe from gzip: $!"); + } else { + open($fh, '<', $file) + or die("Can't open $file: $!"); } - my $key = $name; - if ((!exists $version{$key}) or version_less($version{$key},$version)) { - $version{$key} = $version; - $data{$key} = $_; + local($/) = ""; # read in paragraph mode + while (<$fh>) { + my( $version, $name, $architecture ); + $architecture="none"; # better to keep an entry too much than to delete an entry + /^Package:\s*(\S+)$/mi and $name = $1; + /^Version:\s*(\S+)$/mi and $version = $1; + /^Architecture:\s*(\S+)$/mi and $architecture = $1; + if (!defined $name or !defined $version) { + warn "Stanza without Package or Version\n"; + next; + } + if ($arch ne "source" && defined $architecture && $architecture ne "all" && $architecture ne $arch) { + next; + } + my $key = $name; + + if ((!exists $version{$key}) or version_less($version{$key},$version)) { + $version{$key} = $version; + $data{$key} = $_; + } } + + close($fh); } +#Now output the shortened list: foreach (values %data) { - s/\n*$/\n\n/;# always one empty line to separate stanzas + chomp; chomp; $_ .= "\n\n"; print; }