add support for "last"
[homepage.git] / blog / posts / 2008 / 01 / bts_followup / bts
index e46f85f..35a2d5f 100755 (executable)
@@ -925,8 +925,9 @@ sub bts_select {
 Fire up a mail user agent to follow up to a given bug report, quoting the bug
 log text. Per default the text of the first message in the bug log is inlined
 for quoting purposes, you can specify an alternative one providing an optional
-bug log ID. The first message in the bug log has bug log ID 0, second message
-1, and so on.
+bug log ID. The first message in the bug log has bug log ID 1, second message
+2, and so on. Alternatively, "last" can be specified as a bug log ID to choose
+the last message, "last-1" to choose the next to last, and so on.
 
 =cut
 
@@ -937,7 +938,14 @@ sub bts_followup {
   $msglogid = 1 unless defined $msglogid;
   my $soap = SOAP::Lite->uri($soapurl)->proxy($soapproxyurl);
   my $log = $soap->get_bug_log($bug)->result();
-  my $msg = $log->[$msglogid-1];
+  my @logs = @$log;
+  my $msg;
+  if ($msglogid =~ /^last(-(\d+))?$/i) {
+    my $idx = defined $2 ? $#logs-$2 : $#logs;
+    $msg = $logs[$idx];
+  } else {
+    $msg = $logs[$msglogid-1];
+  }
   my %headers = parse_rfc822_headers($msg->{header});
 
   # extract data needed to compose the follow up email