fedora-security/tools package-release,1.1,1.2

Josh Bressers (bressers) fedora-extras-commits at redhat.com
Fri May 5 02:13:18 UTC 2006


Author: bressers

Update of /cvs/fedora/fedora-security/tools
In directory cvs-int.fedora.redhat.com:/tmp/cvs-serv18207

Modified Files:
	package-release 
Log Message:
Use fuzzy matching rather than strict matching.



Index: package-release
===================================================================
RCS file: /cvs/fedora/fedora-security/tools/package-release,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- package-release	2 May 2006 20:29:31 -0000	1.1
+++ package-release	5 May 2006 02:13:16 -0000	1.2
@@ -17,37 +17,55 @@
 # Global variables
 my ($owner_file, $mirror_host, $mirror_path, @releases);
 
-my ($distro, $package, $desc, $owner, $qa, $cc);
 
 $owner_file='http://cvs.fedora.redhat.com/viewcvs/*checkout*/owners/owners.list?root=extras';
 $mirror_host='download.fedora.redhat.com';
 $mirror_path='/pub/fedora/linux/extras';
 @releases=qw(3 4 5 development);
 
-my $owner_content = get($owner_file)
-    or die "Couldn't get $owner_file";
+sub get_owner_content {
+    my $match = pop;
 
-foreach (split(/\n/, $owner_content)) {
-    next if /^#/;
-    chomp;
+    my ($distro, $package, $desc, $owner, $qa, $cc);
 
-    ($distro, $package, $desc, $owner, $qa, $cc) = split(/\|/, $_);
+    my %owner;
+
+    my $owner_content = get($owner_file)
+        or die "Couldn't get $owner_file";
+
+    foreach (split(/\n/, $owner_content)) {
+        next if /^#/;
+        chomp;
+
+        ($distro, $package, $desc, $owner, $qa, $cc) = split(/\|/, $_);
+
+        next if ( $package !~ m/$match/i);
+
+        $owner{$package} = {};
+        $owner{$package}->{'product'} = $distro;
+        $owner{$package}->{'package'} = $package;
+        $owner{$package}->{'description'} = $desc;
+        $owner{$package}->{'owner'} = $owner;
+        $owner{$package}->{'qacontact'} = $qa;
+        $owner{$package}->{'cclist'} = $cc;
+    }
+
+    return %owner;
 
-    last if $package eq $ARGV[0];
-    undef $package; # If we don't undef this, we fall through
 }
 
-unless ($package) {
-    print "Could not find package $ARGV[0] in $owner_file\n";
+my $package = $ARGV[0];
+
+my %owner = get_owner_content($package);
+
+if (!keys(%owner)) {
+    print "Could not find package \"$package\" in $owner_file\n";
     exit 1;
 }
 
-print "Found package $package in owners.list:\n";
-print "  Distro:\t$distro\n";
-print "  Desc:\t\t$desc\n";
-print "  Owner:\t$owner\n";
-print "  CC:\t\t$cc\n";
-print "  Releases and versions:\n";
+foreach (keys(%owner)) {
+print "Found package $_ in owners.list:\n";
+}
 
 my $ftp = Net::FTP->new($mirror_host, Debug => 0)
     or die "Cannot connect to $mirror_host: $@";
@@ -56,7 +74,7 @@
 
 
 foreach my $release (@releases) {
-    my ($f, $dir, $files, $rev, $ver);
+    my ($f, $dir, $files, $rev, $ver, $name);
 
     $dir = "$mirror_path/$release/SRPMS";
     $release eq "development" && ($release = "dev");
@@ -66,11 +84,13 @@
     foreach my $f (@$files) {
         chomp($f);
         $f =~ s/$dir\///;
-        next unless $f =~ /^$package-(.*)\.src\.rpm$/;
-        next if $1 =~ /-.*-/;
+        next unless $f =~ /^(.*$package.*)-([^\-]*)-([^\-]*)\.src\.rpm$/;
+        $name = $1;
+        $ver = $2;
+        $rev = $3;
 
-        ($ver, $rev) = $1 =~ /^([^-]+)-([^-]+)$/;
-
-        print "    $release\t$ver\t$rev\t$dir/$f\n";
+        print "    $release\t$name\t$ver\t$rev\t$f\n";
   }
 }
+
+$ftp->quit;




More information about the scm-commits mailing list