]> git.donarmstrong.com Git - debbugs.git/commitdiff
add default package support
authorDon Armstrong <don@donarmstrong.com>
Thu, 21 Feb 2008 21:15:12 +0000 (13:15 -0800)
committerDon Armstrong <don@donarmstrong.com>
Thu, 21 Feb 2008 21:15:12 +0000 (13:15 -0800)
Debbugs/Config.pm
scripts/process.in

index bc4a7cfc164f81bf1b17c8ed13352ec9ff168709..8d650e07f26a19110bc2b7c70cedf9e5cc940812 100644 (file)
@@ -66,6 +66,7 @@ BEGIN {
                                 qw(@gRemovalStrongSeverityDefaultDistributionTags),
                                 qw(@gDefaultArchitectures),
                                 qw($gTemplateDir),
+                                qw($gDefaultPackage),
                                ],
                     text     => [qw($gBadEmailPrefix $gHTMLTail $gHTMLExpireNote),
                                 ],
@@ -471,10 +472,26 @@ Default: '[A-Za-z0-9:+\.-]+'
 
 =cut
 
+
 set_default(\%config,'package_version_re',
            '[A-Za-z0-9:+\.~-]+');
 
 
+=item default_package
+
+This is the name of the default package. If set, bugs assigned to
+packages without a maintainer and bugs missing a Package: psuedoheader
+will be assigned to this package instead.
+
+Defaults to unset, which is the traditional debbugs behavoir
+
+=cut
+
+set_default(\%config,'default_package',
+           undef
+          );
+
+
 =item control_internal_requester
 
 This address is used by Debbugs::Control as the request address which
index 29dac8ab82bac7eb1c90130c7cc53e9a5e0949e5..deaadf2a56d0166ec363c9ed80711b04454e7a93 100755 (executable)
@@ -75,6 +75,8 @@ END
 # header and decoded body respectively
 my (@headerlines, @bodylines);
 
+# whether maintainer addresses have been checked
+our $maintainerschecked = 0;
 #maintainer address for this message
 our @maintaddrs;
 # other src addresses
@@ -483,7 +485,10 @@ if ($ref<0) {
         $data->{package} = $pheader{source};
     } elsif (defined $pheader{package}) {
         $data->{package} = $pheader{package};
-    } else {
+    } elsif (defined $config{default_package}) {
+       $data->{package} = $config{default_package},
+    }
+    else {
        &htmllog("Warning","sent",$replyto,"Message not forwarded.");
        my $body = message_body_template('mail/process_no_package',
                                        );
@@ -509,6 +514,22 @@ if ($ref<0) {
        &finish;
     }
 
+    if (defined $config{default_package}) {
+        &checkmaintainers;
+        # if there are no maintainers for this package, assign it to the default package
+        if (not @maintaddrs) {
+             $data->{package} = $config{default_package};
+             $brokenness.= fill_template('mail/process_default_package_selected',
+                                         {old_package => $pheader{source} || $pheader{package} || 'No package',
+                                          new_package => $data->{package},
+                                         }
+                                        );
+             # force the maintainers to be rechecked
+             $maintainerschecked = 0;
+             &checkmaintainers;
+        }
+    }
+
     $data->{keywords}= '';
     if (defined($pheader{'keywords'})) {
         $data->{keywords}= $pheader{'keywords'};
@@ -986,7 +1007,6 @@ sub fill_template{
 }
 
 
-my $maintainerschecked = 0;
 sub checkmaintainers {
     return if $maintainerschecked++;
     return if !length($data->{package});