73 lines
1.8 KiB
Perl
73 lines
1.8 KiB
Perl
#! /usr/bin/env perl
|
|
|
|
use v5.10.1;
|
|
use strict;
|
|
use warnings;
|
|
use Carp;
|
|
use Pod::Usage;
|
|
|
|
use lib "../../";
|
|
|
|
use ACU::Defense;
|
|
use ACU::Grading;
|
|
use ACU::Log;
|
|
use ACU::LDAP;
|
|
use ACU::Process;
|
|
use ACU::Trace;
|
|
|
|
our $basedir = "/intradata";
|
|
|
|
sub process
|
|
{
|
|
my $given_args = shift;
|
|
my @args = shift;
|
|
|
|
my $project_id = shift @args;
|
|
my $year = shift @args // LDAP::get_year();
|
|
|
|
# Project existing?
|
|
if (! -d "$basedir/$year/$project_id")
|
|
{
|
|
log ERROR, "Unable to find $project_id in $year";
|
|
return "Unable to find $project_id in $year";
|
|
}
|
|
|
|
my $grade = Grading->new();
|
|
|
|
# Create defenses groups
|
|
opendir(my $dh, "$basedir/$year/$project_id/defenses/") or croak "can't opendir $basedir/$year/$project_id/defenses/: $!";
|
|
for my $sout (grep { ( ! /^\./ ) && -f "$basedir/$year/$project_id/defenses/$_" } readdir($dh))
|
|
{
|
|
my $defense = Defense->new("$basedir/$year/$project_id/defenses/$_");
|
|
|
|
$grade->create_from_ids($sout, $defense->getIds());
|
|
}
|
|
closedir $dh;
|
|
|
|
# Create traces groups
|
|
opendir($dh, "$basedir/$year/$project_id/traces/") or croak "can't opendir $basedir/$year/$project_id/traces/: $!";
|
|
for my $dir (grep { ( ! /^\./ ) && -d "$basedir/$year/$project_id/traces/$_" } readdir($dh))
|
|
{
|
|
my $ids = {};
|
|
|
|
opendir(my $dhm, "$basedir/$year/$project_id/traces/$dir") or croak "can't opendir $basedir/$year/$project_id/traces/$dir: $!";
|
|
for my $login (grep { ( ! /^\./ ) && -f "$basedir/$year/$project_id/traces/$dir/$_" } readdir($dhm))
|
|
{
|
|
my $trace = Trace->new("$basedir/$year/$project_id/traces/$dir/$_");
|
|
|
|
my %tids = %{ $trace->getIds() };
|
|
for my $kid (keys %tids)
|
|
{
|
|
$ids->{ $kid } = $tids{ $kid };
|
|
}
|
|
}
|
|
|
|
$grade->create_from_ids($_, $ids);
|
|
}
|
|
closedir $dh;
|
|
|
|
return $grade->toString;
|
|
}
|
|
|
|
Process::register_no_parse("gen_grading", \&process);
|