From 65c638c180c1c12ae1fd3bbb68a956db5520dfcf Mon Sep 17 00:00:00 2001 From: Peter Palfrader Date: Thu, 23 Apr 2015 08:34:16 +0200 Subject: parse-trac: handle batch_job updates better --- parse-trac | 39 +++++++++++++++++++++++++++++---------- 1 file changed, 29 insertions(+), 10 deletions(-) diff --git a/parse-trac b/parse-trac index a79399e..c20d061 100755 --- a/parse-trac +++ b/parse-trac @@ -96,19 +96,29 @@ my $body = join '', @mail; $body = decode_base64($body) if ($is_base64); @mail = split(/\r?\n/, $body); +my $batch_job; +my $reporter; +my $comment; my @summary; + while (defined($line = shift @mail)) { - last if $line =~ /^-----------------/; chomp $line; + last if $line =~ /^-----------------/; + last if (defined $batch_job && $line eq ""); + + if ($line =~ /Batch modification to (.*) by (.*?):?$/) { + $batch_job = $1; + $reporter = $2; + }; push @summary, $line; }; my $summary = join ' ', @summary; -my $reporter; while (defined($line = shift @mail)) { if ($line =~ /Reporter:\s*(.*?)\s*\|/i and not defined $reporter) { $reporter = $1; }; + last if ($line =~ /Comment:/i and defined $batch_job); last if $line =~ /^-----------------/ } my @body; @@ -117,11 +127,25 @@ while (defined($line = shift @mail)) { push @body, $line; } +my $notice; +print $comment; + die ("$PROGRAM_NAME - $project: No reporter found.\n") unless defined $reporter; die ("$PROGRAM_NAME - $project: No tracproject found.\n") unless defined $tracproject; -die ("$PROGRAM_NAME - $project: No url found.\n") unless defined $url; -die ("$PROGRAM_NAME - $project: No ticketid found.\n") unless defined $ticketid; -die ("$PROGRAM_NAME - $project: No summary found.\n") unless defined $summary; +if (defined $batch_job) { + $notice = "Batch updated by $reporter to $batch_job"; + $notice .= (length($summary) > 0 ? ": ".$summary : '.'); +} else { + die ("$PROGRAM_NAME - $project: No url found.\n") unless defined $url; + die ("$PROGRAM_NAME - $project: No ticketid found.\n") unless defined $ticketid; + die ("$PROGRAM_NAME - $project: No summary found.\n") unless defined $summary; + + $notice = $is_a_reply ? + "[$tracproject] #$ticketid was updated" : + "[$tracproject] #$ticketid filed by $reporter"; + + $notice .= ": $summary - $url"; +} my $MAXBODYLINES = 5; if (scalar @body > $MAXBODYLINES+1) { # if it's one more let it through, [...] takes a line too @@ -131,11 +155,6 @@ if (scalar @body > $MAXBODYLINES+1) { # if it's one more let it through, [. $body = join "\n", @body; }; -my $notice = $is_a_reply ? - "[$tracproject] #$ticketid was updated" : - "[$tracproject] #$ticketid filed by $reporter"; - -$notice .= ": $summary - $url"; #open(MAIL, "|cat") or open(MAIL, "|$SENDMAIL -t -oi -f $ENVELOPE_FROM") or -- cgit v1.2.3