Any-Template-ProcessDir
view release on metacpan or search on metacpan
lib/Any/Template/ProcessDir.pm view on Meta::CPAN
package Any::Template::ProcessDir;
use 5.006;
use File::Basename;
use File::Find::Wanted;
use File::Path qw(make_path remove_tree);
use File::Slurp qw(read_file write_file);
use File::Spec::Functions qw(catfile catdir);
use Moose;
use Moose::Util::TypeConstraints;
use Try::Tiny;
use strict;
use warnings;
our $VERSION = '0.08'; #VERSION
has 'dest_dir' => ( is => 'ro' );
has 'dir' => ( is => 'ro' );
has 'dir_create_mode' => ( is => 'ro', isa => 'Int', default => oct(775) );
has 'file_create_mode' => ( is => 'ro', isa => 'Int', default => oct(444) );
has 'ignore_files' => ( is => 'ro', isa => 'CodeRef', default => sub { sub { 0 } } );
has 'process_file' => ( is => 'ro', isa => 'CodeRef', lazy_build => 1 );
has 'process_text' => ( is => 'ro', isa => 'CodeRef', lazy_build => 1 );
has 'readme_filename' => ( is => 'ro', default => 'README' );
has 'same_dir' => ( is => 'ro', init_arg => undef );
has 'source_dir' => ( is => 'ro' );
has 'template_file_regex' => ( is => 'ro', lazy_build => 1 );
has 'template_file_suffix' => ( is => 'ro', default => '.src' );
sub BUILD {
my ( $self, $params ) = @_;
die "you must pass one of dir and source_dir/dest_dir"
if (
defined( $self->dir ) ==
( defined( $self->source_dir ) && defined( $self->dest_dir ) ) );
if ( defined( $self->dir ) ) {
$self->{same_dir} = 1;
$self->{source_dir} = $self->{dest_dir} = $self->dir;
}
}
sub _build_template_file_regex {
my $self = shift;
my $template_file_suffix = $self->template_file_suffix;
return
defined($template_file_suffix) ? qr/\Q$template_file_suffix\E$/ : qr/.|/;
}
sub process_dir {
my ($self) = @_;
my $source_dir = $self->source_dir;
my $dest_dir = $self->dest_dir;
if ( !$self->same_dir ) {
remove_tree($dest_dir);
die "could not remove '$dest_dir'" if -d $dest_dir;
}
my $ignore_files = $self->ignore_files;
my @source_files =
find_wanted( sub { -f && !$ignore_files->($File::Find::name) },
$source_dir );
my $template_file_suffix = $self->template_file_suffix;
foreach my $source_file (@source_files) {
$self->generate_dest_file($source_file);
}
if ( !$self->same_dir ) {
$self->generate_readme();
( run in 1.233 second using v1.01-cache-2.11-cpan-f56aa216473 )