#!/bin/env  perl
########################################################################
# housekeeping
########################################################################

use 5.006;
use strict;

use File::Basename  qw( basename dirname    );
use List::MoreUtils qw( zip                 );
use List::Util      qw( pairs pairmap       );

########################################################################
# package variables
########################################################################

my $dir = ( dirname $0 ) . '/..';
my $dyn = "$dir/dynamic";

-d $dyn || mkdir $dyn => 0770
or die "Failed mkdir: '$dyn', $!";

my @v_stringz
= do
{
    my @test_verz
    = qw
    (
        5.5.3
        5.888.888
        5.999.999
    );

    my @formatz
    = map
    {
        (   $_, 'v' . $_ )
    }
    qw
    (
        %d.%d.%d
        %d.%03d.%03d
        %d.%03d%03d
        %d.%03d_%03d
    );

    sort
    {
        $a cmp $b
    }
    pairmap
    {
        sprintf $a => @$b
    }
    map
    {
        my @valz    = ( [ split /\D/ ] ) x @formatz;

        zip @formatz, @valz
    }
    @test_verz;
};

########################################################################
# symlink all of the test templates to version-specific paths.
########################################################################

chdir $dyn
or die "Failed chdir: $dir, $!";

for my $path ( glob "../bin/*_t" )
{
    print "# Link: '$path'\n";
    
    my $base    = basename $path => '_t';
    my $pref    
    = do
    {
        my $i   = index $base, '-';
        substr $base, 0, $i;
    };

    print "# Cleanup: '$pref-*'\n";

    unlink "$pref-*.t";

    symlink $path => "$base-$_.t"
    for @v_stringz;
}

exit 0;
