Dist::Zilla::Plugin::GatherDir::Template - gather all the files in a directory and use them as templates


Dist-Zilla documentation Contained in the Dist-Zilla distribution.

Index


Code Index:

NAME

Top

Dist::Zilla::Plugin::GatherDir::Template - gather all the files in a directory and use them as templates

VERSION

Top

version 4.200008

DESCRIPTION

Top

This is a very, very simple FileGatherer (Dist::Zilla::FileGatherer) plugin. It looks in the directory named in the root attribute and adds all the files it finds there. If the root begins with a tilde, the tilde is replaced with the current user's home directory according to File::HomeDir.

It is meant to be used when minting dists with dzil new, but could be used in building existing dists, too.

AUTHOR

Top

Ricardo SIGNES <rjbs@cpan.org>

COPYRIGHT AND LICENSE

Top


Dist-Zilla documentation Contained in the Dist-Zilla distribution.

package Dist::Zilla::Plugin::GatherDir::Template;
BEGIN {
  $Dist::Zilla::Plugin::GatherDir::Template::VERSION = '4.200008';
}
# ABSTRACT: gather all the files in a directory and use them as templates
use Moose;
extends 'Dist::Zilla::Plugin::GatherDir';
with 'Dist::Zilla::Role::TextTemplate';

use autodie;
use Moose::Autobox;
use Dist::Zilla::File::FromCode;
use namespace::autoclean;


sub _file_from_filename {
  my ($self, $filename) = @_;

  my $template = do {
    open my $fh, '<', $filename;
    local $/;
    <$fh>;
  };

  return Dist::Zilla::File::FromCode->new({
    name => $filename,
    mode => ((stat $filename)[2] & 0755) | 0200, # kill world-writeability, make sure owner-writable.
    code => sub {
      my ($file_obj) = @_;
      $self->fill_in_string(
        $template,
        {
          dist   => \($self->zilla),
          plugin => \($self),
        },
      );
    },
  });
}

__PACKAGE__->meta->make_immutable;
no Moose;
1;

__END__