#!/usr/bin/perl
###############################################################################
#  
#  Usage: perl generate_tests.pl
#
#  Recursively searches for any *.net files and creates
#  file cismdx_opendx_tests
#
#  R.S. Weigel 02/17/2005.
###############################################################################

use File::Find;

$num  = scalar(@ARGV);
$dir1 = "OpenDX/nets";
$dir2 = "OpenDX/examples";
$dir3 = "OpenDX/modules";
$dir4 = "OpenDX/macros";
@directory = ($dir1,$dir2,$dir3,$dir4);

open(DATA_out,">cismdx_opendx_tests");

print DATA_out <<EOF;
\#!/bin/bash

BASE_DIR=\$(dirname \$(readlink -f "\$0" 2>/dev/null||echo "/usr/local/CISM_DX/."))

(cd "\$BASE_DIR" && ./cismdx_setup check)

cd "\$BASE_DIR"
echo
echo "Warning: \$0 will ignore *BATSRUS*,*Raeder*,"
echo "  ModuleDemos.net, and *ForecastModels.net because they need a fix."
echo ---------------------------------------------------------------------------
echo "Close dx window to run next test in sequence."
echo

EOF

find(\&wanted, @directory);

close(DATA_out);

sub wanted {

    ###########################################################################
    # If a file with a .net extension is found
    ###########################################################################
    $line = "./cismdx_opendx_webcall $File::Find::name 1\n";
    if ( ($_ =~ m/.*\.net/) && 
	 ($_ !~ m/\~|BATSRUS|Raeder|ForecastModels|ModuleDemos.net|CISM_DX.net/) ) {

	if ( ($File::Find::dir =~ m/macros/) && ($_ =~ m/Demo/) ) {
	    print DATA_out $line;
	}

	if ($File::Find::dir !~ m/macros/) {
	    print DATA_out $line;
	}

    }
    ##########################################################################

}

