chiark / gitweb /
Merge branch 'master' of /u/webstump/live/
[modbot-mtm.git] / xlog / bin / report
index 7d0bb50e5399c81d0e68e8d62bffc70338b3ad31..92a6a5e2793004467b195b4976a09f8cd3bc35d9 100755 (executable)
@@ -1,13 +1,34 @@
 #!/usr/bin/perl -w
 
-our ($ng,$staticfiles,@ARGV) = @ARGV;
-chdir $ng or die $!;
-
 use strict (qw(vars));
 use IO::Handle;
 use POSIX;
 use CGI qw/:standard *table end_* -no_xhtml/;
 
+our $timesquash = 3;
+# no. of digits at end of time to replace with x, 0..4
+our %reasonshow = qw(approve 1 reject 1);
+# no. of words to show
+
+for (;;) {
+    last unless @ARGV;
+    last unless $ARGV[0] =~ m/^-/;
+    $_ = shift @ARGV;
+    last if m/^--?$/;
+    while (m/^-./) {
+       if (s/^-t([0-4])/-/) {
+           $timesquash= $1;
+       } elsif (s/^-r(\w+)=(\d)$//) {
+           $reasonshow{$1}= $2;
+       } else {
+           die "bad option $_ ?";
+       }
+    }
+}
+
+our ($ng,$staticfiles,@ARGV) = @ARGV;
+chdir $ng or die $!;
+
 our @lines= ();
 our @s;
 our $oddeven = "o";
@@ -21,7 +42,12 @@ sub processlog ($$) {
     while (<F>) {
        chomp;
        @s= split /\t/;
+       push @s, '' if @s<=6;
         $s[0]= strftime "%Y-%m-%d %H:%M:%S %Z", localtime $s[0];
+       for (my $i=0; $i<$timesquash; $i++) {
+           $s[0] =~ s/(\d\d:[\d:]*)\d/$1x/;
+        }
+       $s[0] =~ s/:xx / /;
        &$processline();
        $oddeven =~ y/oe/eo/;
     }
@@ -53,9 +79,17 @@ sub processline_print () {
        $sp[5]= a({ href=>"$staticfiles/nr-$s[6].txt" }, $sp[5] );
     }
 
+    if ($sp[5] =~ m/^\w+\b/ &&
+       defined (my $reasonshow= $reasonshow{$&})) {
+       my @reas= split /\s+/, $sp[5];
+       $reasonshow--;
+       $#reas = $reasonshow if $#reas > $reasonshow;
+       $sp[5] = join ' ', @reas;
+    }
+
     print "<tr class='$oddeven'><td>$sp[0]</td>";
     print "<td class='ref'>$sp[1] $sp[2]</td>";
-    print "<td>$sp[3]</td><td>$sp[4]</td><td>$sp[5]</td></tr>\n";
+    print td([@sp[3..5]]),"</tr>\n";
 }
 
 sub processline_print_ifsingle () {
@@ -105,8 +139,8 @@ if ($pi =~ m,^/message/(\d+)/(.*)$,) {
 }
 
 my $css=<<EOJ;
-span.hole:before {content: " "; }
-td.ref {font-size: 0.75em; }
+span.hole:before { content: " "; }
+td.ref { font-size: 0.75em; }
 tr.o { background: #ddddff; }
 EOJ