]> git.donarmstrong.com Git - debbugs.git/commitdiff
[project @ 2000-10-09 00:32:23 by ajt]
authorajt <>
Mon, 9 Oct 2000 07:32:23 +0000 (23:32 -0800)
committerajt <>
Mon, 9 Oct 2000 07:32:23 +0000 (23:32 -0800)
Should more or less match the tag support on master

scripts/process.in
scripts/service.in

index 38735828737da21c8012d3a3226e46c1694b1d33..8224625db9a5cb69f59f13c54d9e54f23b39209b 100755 (executable)
@@ -1,5 +1,5 @@
 #!/usr/bin/perl
-# $Id: process.in,v 1.17 2000/10/08 10:06:32 doogie Exp $
+# $Id: process.in,v 1.18 2000/10/09 00:32:23 ajt Exp $
 #
 # Usage: process nn
 # Temps:  incoming/Pnn
@@ -427,8 +427,19 @@ END
        &appendlog;
        &finish;
     } else { $s_package= $pheader{'package'}; }
+    $s_keywords= '';
     if (defined($pheader{'keywords'})) {
         $s_keywords= $pfullheader{'keywords'};
+    } elsif (defined($pheader{'tags'})) {
+        $s_keywords= $pfullheader{'tags'};
+    }
+    if (length($s_keywords)) {
+        my @kws;
+        my %gkws = map { (%_, 1) } @gTags;
+        foreach my $kw (sort split(/[,\s]+/, lc($s_keywords))) {
+            push @kws, $kw if (defined $gkws{$kw});
+        }
+        $s_keywords = join(" ", @kws);
     }
     $s_severity= '';
        if (defined($pheader{'severity'}) || defined($pheader{'priority'})) 
@@ -517,7 +528,6 @@ Resent-Message-ID: <handler.$ref.$nn\@$gEmailDomain>
 Resent-Sender: $gMaintainerEmail
 X-$gProject-PR-Message: report $ref
 X-$gProject-PR-Package: $s_package
-X-$gProject-PR-Keywords: $s_keywords
 $fwd
 END
 } elsif ($codeletter eq 'B') {
@@ -536,7 +546,6 @@ Resent-Message-ID: <handler.$ref.$nn\@$gEmailDomain>
 Resent-Sender: $gMaintainerEmail
 X-$gProject-PR-Message: report $ref
 X-$gProject-PR-Package: $s_package
-X-$gProject-PR-Keywords: $s_keywords
 $fwd
 END
 } elsif (@resentccs) {
@@ -558,7 +567,6 @@ Resent-Message-ID: <handler.$ref.$nn\@$gEmailDomain>
 Resent-Sender: $gMaintainerEmail
 X-$gProject-PR-Message: report $ref
 X-$gProject-PR-Package: $s_package
-X-$gProject-PR-Keywords: $s_keywords
 $fwd
 END
 }
index f716c5cdde7c0a9aff78ad22e6545d27dc5c8441..e537860c56fdbec36ba9e669ac7f4389f89dd8f8 100755 (executable)
@@ -1,5 +1,5 @@
 #!/usr/bin/perl -w
-# $Id: service.in,v 1.20 2000/10/07 17:27:13 joy Exp $
+# $Id: service.in,v 1.21 2000/10/09 00:32:23 ajt Exp $
 #
 # Usage: service <code>.nn
 # Temps:  incoming/P<code>.nn
@@ -348,6 +348,51 @@ END
                 $s_severity= $newseverity;
             } while (&getnextbug);
         }
+    } elsif (m/^tags\s+\#?(\d+)\s+(([=+-])\s+)?(\S.*)?$/) {
+       $ok++;
+       $ref= $1; $addsubcode= $3; $tags= $4;
+       $addsub = "add";
+       $addsub = "sub" if ($addsubcode eq "-");
+       $addsub = "add" if ($addsubcode eq "+");
+       $addsub = "set" if ($addsubcode eq "=");
+       my @okaytags = ();
+       my @badtags = ();
+       foreach my $t (split /[\s,]+/, $tags) {
+           if (!grep($_ eq $t, @gTags)) {
+               push @badtags, $t;
+           } else {
+               push @okaytags, $t;
+           }
+       }
+       if (@badtags) {
+            &transcript("Unknown tag/s: ".join(', ', @badtags).".\n".
+                       "Recognised are: ".join(' ', @gTags).".\n\n");
+       }
+       if (&setbug) {
+           if ($addsub eq "set") {
+               $action= "Tags set to: " . join(", ", @okaytags);
+           } elsif ($addsub eq "add") {
+               $action= "Tags added: " . join(", ", @okaytags);
+           } elsif ($addsub eq "sub") {
+               $action= "Tags removed: " . join(", ", @okaytags);
+           }
+           do {
+                &addmaintainers($s_package);
+               $s_keywords = '' if ($addsub eq "set");
+               if ($addsub eq "sub") {
+                   foreach my $t (@badtags) {
+                       $s_keywords = join ' ', grep $_ ne $t, 
+                           split ' ', $s_keywords;
+                   }
+               }
+               foreach my $t (@okaytags) {
+                   $s_keywords = join ' ', grep $_ ne $t, 
+                       split ' ', $s_keywords;
+                   $s_keywords = "$t $s_keywords" unless($addsub eq "sub");
+               }
+               $s_keywords =~ s/\s*$//;
+            } while (&getnextbug);
+       }
     } elsif (m/^retitle\s+\#?(\d+)\s+(\S.*\S)\s*$/i) {
         $ok++;
         $ref= $1; $newtitle= $2;
@@ -388,6 +433,7 @@ END
        $ok++;
         @tomerge= sort { $a <=> $b } split(/\s+/,$1);
         @newmergelist= ();
+        my %tags = ();
         &getmerge;
         while (defined($ref= shift(@tomerge))) {
             &transcript("D| checking merge $ref\n") if $dl;
@@ -395,13 +441,14 @@ END
            next if grep($_ eq $ref,@newmergelist);
            if (!&getbug) { &notfoundbug; @newmergelist=(); last }
             &foundbug;
-            &transcript("D| adding $ref ($s_mergewith)\n") if $dl;
+            &transcript("D| adding $ref ($s_mergedwith)\n") if $dl;
            $mismatch= '';
            &checkmatch('package','m_package',$s_package);
            &checkmatch('forwarded addr','m_forwarded',$s_forwarded);
            $s_severity = '$gDefaultSeverity' if $s_severity eq '';
            &checkmatch('severity','m_severity',$s_severity);
            &checkmatch('done mark','m_done',length($s_done) ? 'done' : 'open');
+            foreach my $t (split /\s+/, $s_keywords) { $tags{$t} = 1; }
            if (length($mismatch)) {
                &transcript("Mismatch - only $gBugs in same state can be merged:\n".
                             $mismatch."\n");
@@ -418,6 +465,7 @@ END
                &getbug || die "huh ?  $gBug $ref disappeared during merge";
                 &addmaintainers($s_package);
                $s_mergedwith= join(' ',grep($_ ne $ref,@newmergelist));
+                $s_keywords= join(' ', keys %tags);
                &savebug;
            }
            &transcript("$action\n\n");