#!/usr/bin/perl -w
#
#  Concatenate our various files together to make a single
# script called "templer".
#
# Steve
# --
#

use strict;
use warnings;

use English qw( -no_match_vars );
use File::Find;



=begin doc

Find all modules beneath "./lib"

=end doc

=cut

sub find_files
{
    my @files;
    my $tf_finder = sub {
        return if !-f;
        return unless /\.pm$/;
        push @files, $File::Find::name;
    };
    find( $tf_finder, "lib" );
    return @files;

}


#
# Open templer for output.
#
open( my $handle, ">", "templer" );
print $handle <<EOF;
#!/usr/bin/perl -w
use strict;
use warnings;

EOF

#
#  Find files named '*.pm'
#

#
# Add up each of these files to the generated script.
#
foreach my $file ( find_files() )
{
    next if ( $file =~ /New/ );
    open( my $tmp, "<", $file ) or
      die "Failed to open file - $file - $!";
    while ( my $line = <$tmp> )
    {
        print $handle $line;
    }
    close($tmp);
}


#
#  Now add on "./bin/templer"
#
open( my $master, "<", "bin/templer" )
  or die "Failed to open bin/templer - $!";
while( my $line = <$master> )
{
    next if ( $line =~ /^require.*Templer.*/ );
    print $handle $line;
}
close( $handle );

#
#  Make the file executable.
#
if ($OSNAME eq 'MSWin32') {
    #pl2bat is included by default in Strawberry and ActiveState Perl.
    `pl2bat templer`; # Will wrap templer in a batch file named templer.bat.
}
else {

    chmod( 0755, "templer" );
}

#
#  All done.
#
close($handle);
