X-Git-Url: http://git.ieval.ro/?p=gruntmaster-daemon.git;a=blobdiff_plain;f=lib%2FGruntmaster%2FDaemon.pm;h=e9114c8200496a88d2a91ab05199f7815defdb47;hp=ccf9e4e213f10f88076fec3bd2de6154b5936f34;hb=ddceb393c90f620dd194c22e5e85d8c9fe87ee34;hpb=e3a3697ae29ae07d285d138b382c364136de0999 diff --git a/lib/Gruntmaster/Daemon.pm b/lib/Gruntmaster/Daemon.pm index ccf9e4e..e9114c8 100644 --- a/lib/Gruntmaster/Daemon.pm +++ b/lib/Gruntmaster/Daemon.pm @@ -8,6 +8,7 @@ our $VERSION = '0.001'; use Gruntmaster::Daemon::Constants qw/ERR/; use Gruntmaster::Daemon::Base qw/watch/; +use Gruntmaster::Daemon::Format qw/mkrun/; use Gruntmaster::Page qw/generate/; use Fcntl qw/:flock/; @@ -36,16 +37,29 @@ sub safe_can { safe_can_nodie @_ or get_logger->logdie("No such \l$type: '$name'"); } +sub prepare{ + my $name = $_[0]; + my $basename = fileparse $name, qr/\.[^.]*/; + get_logger->trace("Preparing file $name..."); + + open my $devnull, devnull; + open my $errors, '>>compile-error'; + my $ret = open3 $devnull, $errors, undef, 'gruntmaster-compile', CPP => $basename, $name; + waitpid $ret, 0; + close $devnull; + close $errors; + die 'Compile error' if $? +} + sub prepare_files{ my ($dir, $meta) = @_; for my $file (values $meta->{files}) { my ($format, $name) = @{$file}{qw/format name/}; - my $prepare = safe_can Format => prepare => $format; - $file->{run} = safe_can Format => run => $format; + $file->{run} = mkrun($format); die "No such file: '$name'" unless -e $name; - $prepare->($name); + prepare $name; } } @@ -117,7 +131,6 @@ sub process{ # Clean up get_logger->info("Job result: " . $meta->{result_text}); - delete $meta->{files}{$_}{run} for keys $meta->{files}; $meta->{results} = \@full_results if scalar @full_results; DumpFile "meta.yml", $meta; for (<*>) {