]> git.donarmstrong.com Git - wannabuild.git/blobdiff - bin/keep-latest
Auto-committed schema changes.
[wannabuild.git] / bin / keep-latest
index 1aedc49959782175e9ca6815561d449c77484c40..ebc4fa9d7d048c7c03a002283ace2edf897cbdb4 100755 (executable)
@@ -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;
 }