#!/usr/bin/env perl
use strict;
use warnings;
use Getopt::Long;
use File::Find;
use YAML::Syck;

our $config = {};
my $home = $ENV{HOME};
if (-f "$home/.a8rc") {
    $config = LoadFile("$home/.a8rc");
}

GetOptions(
    'r|file_root=s'    => \(my $file_root),
    'verbose'	       => \(my $verbose),
) or usage();

my @failures;
my $directory = $file_root || $config->{file_root} || "cases/testlink";
find(\&wanted, $directory);
summary();

sub wanted {
    if($File::Find::name =~ m{\.st$}){
	print "Validating file $File::Find::name\n" if $verbose;
	my $output = qx(a8-validate '$File::Find::name' 2>&1);
	print $output if $verbose;
	if ($?) {
	    push @failures, {file => $File::Find::name, output => $output};
	}
    }
}

sub summary {
    if (@failures) {
	print "The following files failed validation:\n";
	print "\t$_->{file}\n" for @failures;
	exit 1;
    } else {
	print "All Ok\n";
    }
}
