Archived
1
0
This repository has been archived on 2021-10-08. You can view files and clone it, but cannot push or open issues or pull requests.
ACU/grades/generate.pl

74 lines
1.4 KiB
Perl
Raw Permalink Normal View History

2013-06-12 22:00:53 +00:00
#! /usr/bin/env perl
use v5.10.1;
use strict;
use warnings;
2013-09-09 11:42:44 +00:00
use File::Basename;
2013-06-12 22:00:53 +00:00
use Getopt::Long;
use Pod::Usage;
2013-09-09 11:42:44 +00:00
use lib "../";
use ACU::Grading;
use ACU::Log;
use ACU::Trace;
2013-06-12 22:00:53 +00:00
# Parse arguments
2013-09-12 10:00:18 +00:00
our $debug;
2013-09-09 11:42:44 +00:00
my $input; my $format = "csv";
2013-06-12 22:00:53 +00:00
my $help; my $man;
GetOptions ("help|h|?" => \$help,
"man" => \$man,
2013-09-09 11:42:44 +00:00
"format|F=s" => \$format,
2013-09-12 10:00:18 +00:00
"debug|d|v" => \$debug,
2013-06-12 22:00:53 +00:00
"" => \$input)
or pod2usage(2);
pod2usage(1) if $help;
pod2usage(-exitval => 0, -verbose => 2) if $man;
my $xmlgrading;
2013-09-09 11:42:44 +00:00
if (defined $input) {
$xmlgrading = *STDIN;
2013-06-12 22:00:53 +00:00
}
else {
open $xmlgrading, "<", shift or die $!;
}
binmode $xmlgrading;
2013-09-21 16:29:17 +00:00
my $str;
$str .= $_ while(<$xmlgrading>);
my $grade = Grading->new($str);
2013-09-09 11:42:44 +00:00
close $xmlgrading unless $xmlgrading eq *STDIN;
2013-06-12 22:00:53 +00:00
2013-09-09 11:42:44 +00:00
my $who = "";
while ($#ARGV >= -1)
{
my $arg = shift // "//";
2013-06-12 22:00:53 +00:00
2013-09-09 11:42:44 +00:00
if ($arg eq "//")
{
say $who.",".$grade->compute() if ($format eq "csv" or $format eq "CSV");
print $grade->computeXML($who) if ($format eq "xml" or $format eq "XML");
2013-06-12 22:00:53 +00:00
2013-09-09 11:42:44 +00:00
$grade->reset();
$who = "";
2013-06-12 22:00:53 +00:00
2013-09-09 11:42:44 +00:00
last if ($#ARGV == -1);
}
else
{
2013-09-12 10:00:18 +00:00
if (-f $arg)
{
open my $xmltrace, "<", $arg or die "$arg: $!";
binmode $xmltrace;
my $trace = Trace->new($xmltrace);
close $xmltrace;
2013-09-09 11:42:44 +00:00
2013-09-12 10:00:18 +00:00
$grade->fill($trace->getIds);
$who = $trace->getFirstWho() // basename $arg, ".xml", ".trace", ".traces", ".defense", ".defenses", ".mill";
}
else {
log WARN, "No trace file: $arg, skip";
}
2013-09-09 11:42:44 +00:00
}
}