#!/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 => ['@resulttemplatedir@']); my $content = $xslate->render("html.tmpl", { results => $results, task_ids => $task_ids, }); print encode_utf8($content); } if (! defined $ARGV[0] || ! -d $ARGV[0]) { print STDERR "Please specify correct working directory\n"; exit (1); } my $workdir = $ARGV[0]; my $data = []; my $task_ids = {}; # go through *each* result directory my $olddir = getcwd; for (`find "$workdir" -maxdepth 1 -type d`) { 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;