#! /usr/bin/env perl use v5.10.1; use strict; use warnings; use File::Basename; use Getopt::Long; use Pod::Usage; use lib "../"; use ACU::Grading; use ACU::Log; use ACU::Trace; # Parse arguments my $input; my $format = "csv"; my $help; my $man; GetOptions ("help|h|?" => \$help, "man" => \$man, "format|F=s" => \$format, "" => \$input) or pod2usage(2); pod2usage(1) if $help; pod2usage(-exitval => 0, -verbose => 2) if $man; my $xmlgrading; if (defined $input) { $xmlgrading = *STDIN; } else { open $xmlgrading, "<", shift or die $!; } binmode $xmlgrading; my $grade = Grading->new($xmlgrading); close $xmlgrading unless $xmlgrading eq *STDIN; my $who = ""; while ($#ARGV >= -1) { my $arg = shift // "//"; 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"); $grade->reset(); $who = ""; last if ($#ARGV == -1); } else { open my $xmltrace, "<", $arg or die $!; binmode $xmltrace; my $trace = Trace->new($xmltrace); close $xmltrace; $grade->fill($trace->getIds); $who = $trace->getFirstWho() // basename $arg, ".xml", ".trace", ".traces", ".defense", ".defenses", ".mill"; } }