#!/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() ) { # Skip lib::Templer::Site::New next if ( $file =~ /Templer\/Site\/New.pm$/ ); # Is this Templer::Site? my $site = 0; $site = 1 if ( $file =~ /Templer\/Site.pm$/ ); open( my $tmp, "<", $file ) or die "Failed to open file - $file - $!"; while ( my $line = <$tmp> ) { if ($site) { # # We don't want to "use Templer::Site::Asset" or # "use Templer::Site::Page" when running in standalone # mode. # print $handle $line unless ( $line =~ /use Templer::Site::(Asset|Page)/ ); } else { 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);