Add functions for splitting report records into named fields
[fateserver.git] / index.cgi
1 #! /usr/bin/perl
2
3 use strict;
4 use warnings;
5
6 use FATE;
7
8 our $fatedir;
9 require "$ENV{FATEWEB_CONFIG}";
10
11 opendir D, $fatedir or fail 'Server error: $fatedir not found';
12 my @slots = grep /^[^.]/, readdir D;
13 closedir D;
14
15 print "Content-type: text/html\r\n\r\n";
16
17 doctype;
18 start 'html', xmlns => "http://www.w3.org/1999/xhtml";
19 start 'head';
20 tag 'meta', 'http-equiv' => "Content-Type",
21             'content'    => "text/html; charset=utf-8";
22 tag 'link', rel  => 'stylesheet',
23             type => 'text/css',
24             href => 'fate.css';
25 print "<title>FATE</title>\n";
26 end 'head';
27
28 start 'body';
29 h1 'FATE';
30
31 start 'table', id => 'index';
32 trowh 'Time', 'Arch', 'OS', 'Compiler', 'Rev', 'Result';
33 for my $slot (sort @slots) {
34     open R, "$fatedir/$slot/latest/report";
35     my $hdr  = split_header scalar <R>;
36     my $conf = split_config scalar <R>;
37     my $ntest = 0;
38     my $npass = 0;
39     my $rtext;
40     my $rclass;
41     while (<R>) {
42         my $rec = split_rec $_;
43         $$rec{status} == 0 and $npass++;
44         $ntest++;
45     }
46     close R;
47     start 'tr';
48     start 'td'; start 'a', href => "history.cgi?slot=$$hdr{slot}";
49     print $$hdr{date};
50     end 'td';
51     td $$conf{subarch} || $$conf{arch};
52     td $$conf{os};
53     td $$conf{cc};
54     td $$hdr{rev};
55     if ($npass) {
56         $rtext  = "$npass / $ntest";
57         $rclass = $npass==$ntest? 'pass' : $npass? 'warn' : 'fail';
58     } else {
59         $rtext  = $$hdr{errstr};
60         $rclass = 'fail'
61     }
62     start 'td', class => $rclass;
63     start 'a', href => "report.cgi?slot=$$hdr{slot}&amp;time=$$hdr{date}";
64     print $rtext;
65     end 'a';
66     end 'td';
67     end 'tr';
68 }
69 end 'table';
70 end 'body';
71 end 'html';