summaryrefslogtreecommitdiffstats
path: root/controller/result_stats
blob: a92d6d6f5ebbe4a699b4e1b3e3a25b19424f119b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
#!/bin/perl

use strict;
use warnings;
use utf8;

use Data::Dumper;
use File::Basename;
use Cwd;
use Encode 'encode_utf8';

# teplates
use Text::Xslate;

# yaml (quick) parser
use YAML::Syck;

our $srcdir = dirname(__FILE__);

sub html_printer
{
    my $results = $_[0];
    my $task_ids = $_[1];

    my $xslate = Text::Xslate->new(path => ["$srcdir/result_templates"]);

    my $content = $xslate->render("html.tmpl", {
        results => $results,
        task_ids => $task_ids,
    });
    print encode_utf8($content);
}

my $workdir = $ARGV[0];

my $data = [];

my $task_ids = {};

# go through *each* result directory
my $olddir = getcwd;
for (`find "$workdir" -maxdepth 1 -type d -name 'result_*'`) {
    chomp;
    chdir $_;

    my $run_results = {};
    $run_results->{dirname} = basename($_);
    $run_results->{tasks} = {};
    $run_results->{exit_status} = 0;

    # go through each task
    for (`find -maxdepth 1 -type f -name '*.result'`) {
        chomp;

        (my $task_id = $_) =~ s/\.result$//;
        $task_id =~ s/.*\///;
        $task_ids->{$task_id} = 1;

        my $yaml_file = $_;
        open my $fd, '<', $yaml_file
            or die "can't open yaml file '$yaml_file'";

        my $config = YAML::Syck::LoadFile($fd);
        if ($config->{exit_status} != 0) {
            $run_results->{exit_status} = 1;
        }
        $run_results->{tasks}->{$task_id} = $config;
    }

    push @{$data}, $run_results;
}
chdir $olddir;

html_printer $data, $task_ids;