summaryrefslogtreecommitdiffstats
path: root/controller/result_stats
diff options
context:
space:
mode:
Diffstat (limited to 'controller/result_stats')
-rwxr-xr-xcontroller/result_stats74
1 files changed, 74 insertions, 0 deletions
diff --git a/controller/result_stats b/controller/result_stats
new file mode 100755
index 0000000..a92d6d6
--- /dev/null
+++ b/controller/result_stats
@@ -0,0 +1,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;