Add stats script for short report
authorHeiko Schlittermann <hs@schlittermann.de>
Wed, 23 Sep 2015 22:31:26 +0200
changeset 27 6045d5e2f590
parent 26 cee1b738fa67
child 28 6aaf7117423d
Add stats script for short report
scripts/stats
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/scripts/stats	Wed Sep 23 22:31:26 2015 +0200
@@ -0,0 +1,54 @@
+#! /usr/bin/perl
+use 5.14.0;
+use strict;
+use warnings;
+use Template;
+use List::Util qw(max);
+
+my %fail;
+
+foreach my $file (glob "out*/log.*") {
+    my ($name, $platform) = $file =~ /out-?(.*?)\/log\.(.*)/;
+    my ($os) = $platform =~ /(^.*?)-/;
+    $_ = do { local @ARGV = $file; local $/ = undef; <> };
+    s/
/\n/g;
+    my ($version) = /^Exim version (\S+)/mi;
+    my ($ssl) =
+        /^Support for: .*\bGnuTLS/mi    ? 'GnuTLS'
+      : /^Support for: .*\bOpenSSL\b/mi ? 'OpenSSL'
+      :                                   'No SSL';
+
+    $fail{$os}{$ssl}{$version} = {};
+
+    foreach (/^\*{2}.*\/(\d+)\s+failed.*?=+/mg) {
+        $fail{$os}{$ssl}{$version}{_failed}{$_} = 1;
+        $fail{$os}{$ssl}{_failed}{$_} = 1;
+    }
+}
+
+my $os_len = max map { length } keys %fail;
+my $ssl_len = max map { length } map { keys %$_ } values %fail;
+my $version_len =
+  max map { length } map { keys %$_ } map { values %$_ } values %fail;
+
+foreach my $os (sort keys %fail) {
+    foreach my $ssl (sort keys %{ $fail{$os} }) {
+        foreach my $version (grep { !/^_/ } sort keys %{ $fail{$os}{$ssl} }) {
+            printf "%*s %*s %*s: ",
+              -$os_len      => $os,
+              -$ssl_len     => $ssl,
+              -$version_len => $version;
+
+            foreach my $failed (sort { $a <=> $b }
+                keys %{ $fail{$os}{$ssl}{_failed} })
+            {
+                printf "%4s ",
+                  $fail{$os}{$ssl}{$version}{_failed}{$failed} ? $failed : '-';
+            }
+
+            print "\n";
+        }
+        print "\n";
+    }
+}
+