From: Don Armstrong Date: Thu, 20 Sep 2007 06:17:58 +0000 (-0700) Subject: * Start using templates in process.in X-Git-Tag: release/2.6.0~510^2~19 X-Git-Url: https://git.donarmstrong.com/?p=debbugs.git;a=commitdiff_plain;h=b4bfee3baadcc9e2024ef4024fa3f86a39334345 * Start using templates in process.in * All ack messages are now generated using templates --- diff --git a/scripts/process.in b/scripts/process.in index 18cf27d..633df40 100755 --- a/scripts/process.in +++ b/scripts/process.in @@ -17,14 +17,14 @@ use Debbugs::User qw(read_usertags write_usertags); use Debbugs::Common qw(:lock get_hashname); use Debbugs::Status qw(writebug isstrongseverity lockreadbugmerge); -use Debbugs::CGI qw(html_escape); +use Debbugs::CGI qw(html_escape bug_url); use Debbugs::Log qw(:misc); use Debbugs::Text qw(:templates); use Debbugs::Status qw(:versions); -use Debbugs::Config qw(:globals); +use Debbugs::Config qw(:globals :config); chdir( "$gSpoolDir" ) || die "chdir spool: $!\n"; @@ -587,6 +587,8 @@ END $data->{package} = $pheader{package}; } else { &htmllog("Warning","sent",$replyto,"Message not forwarded."); + my $body = message_body_template('mail/process_no_package', + ); &sendmessage(create_mime_message( ["X-Loop" => "$gMaintainerEmail", From => "$gMaintainerEmail ($gProject $gBug Tracking System)", @@ -645,16 +647,9 @@ END $data->{severity} =~ s/^\s*(.+)\s*$/$1/; if (!grep($_ eq $data->{severity}, @gSeverityList, "$gDefaultSeverity")) { - $brokenness.= <{severity} was not recognised. -The default severity $gDefaultSeverity is being used instead. -The recognised values are: $gShowSeverities. -END -# if we use @gSeverityList array in the above line, perl -c gives: -# In string, @gSeverityList now must be written as \@gSeverityList at -# process line 452, near "$gDefaultSeverity is being used instead. + $brokenness.= fill_in_template('mail/invalid_severity', + {severity=>$data->{severity}} + ); $data->{severity}= ''; } } @@ -667,7 +662,7 @@ END &filelock("nextnumber.lock"); open(N,"nextnumber") || &quit("nextnumber: read: $!"); my $nextnumber=; $nextnumber =~ s/\n$// || &quit("nextnumber bad format"); - $ref= $nextnumber+0; $nextnumber += 1; my $newref=1; + $ref= $nextnumber+0; $nextnumber += 1; $newref=1; &overwrite('nextnumber', "$nextnumber\n"); &unfilelock; my $hash = get_hashname($ref); @@ -700,10 +695,9 @@ END write_usertags(\%user_tags,$user); } else { - $brokenness .=< $user} + ); } } &overwrite("db-h/$hash/$ref.report", @@ -720,20 +714,17 @@ my $newsubject= $subject; $newsubject =~ s/^$gBug#$ref:*\s*//; my $xcchdr= $header{ 'x-debbugs-cc' } || ''; if ($xcchdr =~ m/\S/) { push(@resentccs,$xcchdr); - $resentccexplain.= < $xcchdr}, + ); } if (@maintaddrs && ($codeletter eq 'B' || $codeletter eq 'M')) { push(@resentccs,@maintaddrs); - $resentccexplain.= < \@maintaddrs, + }, + ); } @bccs = @addsrcaddrs; @@ -763,17 +754,9 @@ if (defined $pheader{source}) { my $veryquiet= $codeletter eq 'Q'; if ($codeletter eq 'M' && !@maintaddrs) { $veryquiet= 1; - $brokenness.= < "$gMaintainerEmail", - From => "$gMaintainerEmail ($gProject $gBug Tracking System)", - To => $replyto, - Subject => "$gBug#$ref: Acknowledgement of QUIET report ($subject)", - "Message-ID" => "", - "In-Reply-To" => $header{'message-id'}, - References => $header{'message-id'}, - Precedence => 'bulk', - "X-$gProject-PR-Message" => "ack-quiet $ref", - "X-$gProject-PR-Package" => $data->{package}, - "X-$gProject-PR-Keywords" => $data->{keywords}, - # Only have a X-$gProject-PR-Source when we know the source package - length($source_package)?("X-$gProject-PR-Source" => $source_package):(), - "Reply-To" => "$ref-quiet\@$gEmailDomain", - ],< "$gMaintainerEmail", - From => "$gMaintainerEmail ($gProject $gBug Tracking System)", - To => $replyto, - Subject => "$gBug#$ref: Acknowledgement of maintainer-only report ($subject)", - "Message-ID" => "", - "In-Reply-To" => $header{'message-id'}, - References => $header{'message-id'}, - Precedence => 'bulk', - "X-$gProject-PR-Message" => "ack-maintonly $ref", - "X-$gProject-PR-Package" => $data->{package}, - "X-$gProject-PR-Keywords" => $data->{keywords}, - # Only have a X-$gProject-PR-Source when we know the source package - length($source_package)?("X-$gProject-PR-Source" => $source_package):(), - "Reply-To" => "$ref-maintonly\@$gEmailDomain", - ],< "$gMaintainerEmail", - From => "$gMaintainerEmail ($gProject $gBug Tracking System)", - To => $replyto, - Subject => "$gBug#$ref: Acknowledgement ($subject)", - "Message-ID" => "", - "In-Reply-To" => $header{'message-id'}, - References => $header{'message-id'}, - Precedence => 'bulk', - "X-$gProject-PR-Message" => "ack $ref", - "X-$gProject-PR-Package" => $data->{package}, - "X-$gProject-PR-Keywords" => $data->{keywords}, - # Only have a X-$gProject-PR-Source when we know the source package - length($source_package)?("X-$gProject-PR-Source" => $source_package):(), - "Reply-To" => "$ref\@$gEmailDomain", - ],<{refreplyto} = "$ref-quiet\@$gEmailDomain"; + $t_h{subject} = length($info)? + "$gBug#$ref: Info received and FILED only ($subject)": + "$gBug#$ref: Acknowledgement of QUIET report ($subject)"; + } + elsif ($codeletter eq 'M') { + $forwardexplain = fill_template('mail/forward_maintonly', + ); + # these are the headers that maintonly messages override + $t_h{messageid} = ""; + $t_h{pr_message} = "ack${infod}-maintonly $ref"; + $t_h{reply_to} = "$ref-maintonly\@$gEmailDomain"; + $extra_vars->{refreplyto} = "$ref-maintonly\@$gEmailDomain"; + $t_h{subject} = length($info)? + "$gBug#$ref: Info received for maintainer only ($subject)": + "$gBug#$ref: Acknowledgement of maintainer-only report ($subject)"; + } + else { + $forwardexplain = fill_template('mail/forward_normal', + ); + $t_h{messageid} = ""; + $t_h{pr_message} = "ack${infod} $ref"; + $t_h{reply_to} = "$ref\@$gEmailDomain"; + $extra_vars->{refreplyto} = "$ref\@$gEmailDomain"; + $t_h{subject} = length($info)? + "$gBug#$ref: Info received ($subject)" : + "$gBug#$ref: Acknowledgement ($subject)"; + } + my $body = message_body_template('mail/process_ack', + {forwardexplain => $forwardexplain, + resentccexplain => $resentccexplain, + thanks => $thanks, + %{$extra_vars} + } + ); + &sendmessage(create_mime_message( ["X-Loop" => "$gMaintainerEmail", From => "$gMaintainerEmail ($gProject $gBug Tracking System)", To => $replyto, - Subject => "$gBug#$ref: Info received and FILED only (was $subject)", - "Message-ID" => "", - "In-Reply-To" => $header{'message-id'}, + Subject => $t_h{subject}, + "Message-ID" => $t_h{messageid}, + "In-Reply-To" => $header{'message-id'}, References => $header{'message-id'}, Precedence => 'bulk', - "X-$gProject-PR-Message" => "ack-info-quiet $ref", - "X-$gProject-PR-Package" => $data->{package}, - "X-$gProject-PR-Keywords" => $data->{keywords}, - # Only have a X-$gProject-PR-Source when we know the source package - length($source_package)?("X-$gProject-PR-Source" => $source_package):(), - "Reply-To" => "$ref-maintonly\@$gEmailDomain", - ],< "$gMaintainerEmail", - From => "$gMaintainerEmail ($gProject $gBug Tracking System)", - To => $replyto, - Subject => "$gBug#$ref: Info received for maintainer only (was $subject)", - "Message-ID" => "", - "In-Reply-To" => $header{'message-id'}, - References => "$header{'message-id'} $data->{msgid}", - Precedence => 'bulk', - "X-$gProject-PR-Message" => "ack-info-maintonly $ref", - "X-$gProject-PR-Package" => $data->{package}, - "X-$gProject-PR-Keywords" => $data->{keywords}, - "Reply-To" => "$ref-maintonly\@$gEmailDomain", - ],< "$gMaintainerEmail", - From => "$gMaintainerEmail ($gProject $gBug Tracking System)", - To => $replyto, - Subject => "$gBug#$ref: Info received ($subject)", - "Message-ID" => "", - "In-Reply-To" => $header{'message-id'}, - References => "$header{'message-id'} $data->{msgid}", - Precedence => 'bulk', - "X-$gProject-PR-Message" => "ack-info $ref", + "X-$gProject-PR-Message" => $t_h{pr_message} || "ack $ref", "X-$gProject-PR-Package" => $data->{package}, "X-$gProject-PR-Keywords" => $data->{keywords}, # Only have a X-$gProject-PR-Source when we know the source package length($source_package)?("X-$gProject-PR-Source" => $source_package):(), - "Reply-To" => "$ref\@$gEmailDomain", - ],< $t_h{reply_to} || "$ref\@$gEmailDomain", + ],$body,[]), '',undef,1); } &appendlog; @@ -1199,6 +1053,48 @@ sub sendmessage { recipients => $recips); } +=head2 message_body_template + + message_body_template('mail/ack',{ref=>'foo'}); + +Creates a message body using a template + +=cut + +sub message_body_template{ + my ($template,$extra_var) = @_; + $extra_var ||={}; + my $body = fill_template($template,$extra_var); + return fill_in_template(template => 'mail/message_body', + variables => {%{$extra_var}, + body => $body, + }, + ); +} + +=head2 fill_template + + fill_template('mail/foo',{foo=>'bar'}); + +Calls fill_in_template with a default set of variables and any extras +added in. + +=cut + +sub fill_template{ + my ($template,$extra_var) = @_; + $extra_var ||={}; + my $variables = {config => \%config, + defined($ref)?(ref => $ref):(), + bug_url => sub{bug_url($_[0])}, + %{$extra_var}, + }; + return fill_in_template(template => $template, + variables => $variables, + ); +} + + my $maintainerschecked = 0; sub checkmaintainers { return if $maintainerschecked++; diff --git a/templates/en_US/mail/footer.tmpl b/templates/en_US/mail/footer.tmpl new file mode 100644 index 0000000..16de892 --- /dev/null +++ b/templates/en_US/mail/footer.tmpl @@ -0,0 +1,12 @@ +-- +{ +my %ref_handled; +for my $bug ($ref,@refs) { + next unless defined $bug; + next if exists $ref_handled{$bug}; + $ref_handled{$bug} = 1; + $OUT .= bug_url($bug),qq(\n); +} +} +{$config{project}} {ucfirst($config{bug})} Tracking System +Contact {$config{maintainer_email}} with problems diff --git a/templates/en_US/mail/forward_maintonly.tmpl b/templates/en_US/mail/forward_maintonly.tmpl new file mode 100644 index 0000000..ec6606e --- /dev/null +++ b/templates/en_US/mail/forward_maintonly.tmpl @@ -0,0 +1,4 @@ + +Your message has been forwarded to the package maintainers (but not +other interested parties, as you requested) for their attention; they +will reply in due course. diff --git a/templates/en_US/mail/forward_normal.tmpl b/templates/en_US/mail/forward_normal.tmpl new file mode 100644 index 0000000..c345364 --- /dev/null +++ b/templates/en_US/mail/forward_normal.tmpl @@ -0,0 +1,3 @@ + +Your message is being forwarded to the package maintainers and other +interested parties for their attention; they will reply in due course. diff --git a/templates/en_US/mail/forward_veryquiet.tmpl b/templates/en_US/mail/forward_veryquiet.tmpl new file mode 100644 index 0000000..623eded --- /dev/null +++ b/templates/en_US/mail/forward_veryquiet.tmpl @@ -0,0 +1,5 @@ + +Your message has not been forwarded to the package maintainers or +other interested parties; you should ensure that the developers are +aware of the problem you have entered into the system - preferably +quoting the { $config{bug} } reference number, #{ $ref }. diff --git a/templates/en_US/mail/header.tmpl b/templates/en_US/mail/header.tmpl new file mode 100644 index 0000000..e69de29 diff --git a/templates/en_US/mail/invalid_maintainer.tmpl b/templates/en_US/mail/invalid_maintainer.tmpl new file mode 100644 index 0000000..9a244ff --- /dev/null +++ b/templates/en_US/mail/invalid_maintainer.tmpl @@ -0,0 +1,9 @@ + +You requested that the message be sent to the package maintainer(s) +but either the { $config{bug} } report is not associated with any package (probably +because of a missing Package pseudo-header field in the original { $config{bug} } +report), or the package(s) specified do not have any maintainer(s). + +Your message has *not* been sent to any package maintainers; it has +merely been filed in the { $config{bug} } tracking system. If you require assistance +please contact { $config{maintainer_email} } quoting the { $config{bug} } number { $ref }. diff --git a/templates/en_US/mail/invalid_severity.tmpl b/templates/en_US/mail/invalid_severity.tmpl new file mode 100644 index 0000000..dad928f --- /dev/null +++ b/templates/en_US/mail/invalid_severity.tmpl @@ -0,0 +1,5 @@ + +Your message specified a Severity: in the pseudo-header, but +the severity value {$severity} was not recognised. +The default severity {$config{default_severity}} is being used instead. +The recognised values are: {$config{show_severities}}. diff --git a/templates/en_US/mail/invalid_user.tmpl b/templates/en_US/mail/invalid_user.tmpl new file mode 100644 index 0000000..d7f3891 --- /dev/null +++ b/templates/en_US/mail/invalid_user.tmpl @@ -0,0 +1,3 @@ + +Your message tried to set a usertag, but didn't have a valid +user set ('{$user}' isn't valid) diff --git a/templates/en_US/mail/maintainercc.tmpl b/templates/en_US/mail/maintainercc.tmpl new file mode 100644 index 0000000..5a6cb41 --- /dev/null +++ b/templates/en_US/mail/maintainercc.tmpl @@ -0,0 +1,3 @@ + +Your message has been sent to the package maintainer(s): +{join('',map {" $_\n"} @maintaddrs)} \ No newline at end of file diff --git a/templates/en_US/mail/message_body.tmpl b/templates/en_US/mail/message_body.tmpl new file mode 100644 index 0000000..6dfd6ac --- /dev/null +++ b/templates/en_US/mail/message_body.tmpl @@ -0,0 +1,3 @@ +{include('mail/header')} +{$body} +{include('mail/footer')} \ No newline at end of file diff --git a/templates/en_US/mail/process_ack.tmpl b/templates/en_US/mail/process_ack.tmpl new file mode 100644 index 0000000..eca5775 --- /dev/null +++ b/templates/en_US/mail/process_ack.tmpl @@ -0,0 +1,10 @@ +{$thanks} +This is an automatically generated reply to let you know your message +has been received. +{ $forwardexplain }{ $resentccexplain } +If you wish to submit further information on this problem, please +send it to { $refreplyto }, as before. + +Please do not send mail to {$config{maintainer_email}} unless you wish +to report a problem with the {ucfirst($config{bug})}-tracking system. +{$brokenness} diff --git a/templates/en_US/mail/process_ack_thanks_additional.tmpl b/templates/en_US/mail/process_ack_thanks_additional.tmpl new file mode 100644 index 0000000..47e7675 --- /dev/null +++ b/templates/en_US/mail/process_ack_thanks_additional.tmpl @@ -0,0 +1,2 @@ +Thank you for the additional information you have supplied regarding +this {$config{bug}} report. diff --git a/templates/en_US/mail/process_ack_thanks_new.tmpl b/templates/en_US/mail/process_ack_thanks_new.tmpl new file mode 100644 index 0000000..61954ab --- /dev/null +++ b/templates/en_US/mail/process_ack_thanks_new.tmpl @@ -0,0 +1 @@ +Thank you for filing a new {$config{bug}} report with {$config{project}}. diff --git a/templates/en_US/mail/xdebbugscc.tmpl b/templates/en_US/mail/xdebbugscc.tmpl new file mode 100644 index 0000000..cc6e4d3 --- /dev/null +++ b/templates/en_US/mail/xdebbugscc.tmpl @@ -0,0 +1,4 @@ + +As you requested using X-Debbugs-CC, your message was also forwarded to + { $xcchdr } +(after having been given a { $config{bug} } report number, if it did not have one).