Dist-Zilla-App-Command-regenerate
view release on metacpan or search on metacpan
lib/Dist/Zilla/Plugin/Regenerate.pm view on Meta::CPAN
use 5.006; # our
use strict;
use warnings;
package Dist::Zilla::Plugin::Regenerate;
our $VERSION = '0.001003';
# ABSTRACT: Write contents to your source tree explicitly
our $AUTHORITY = 'cpan:DBOOK'; # AUTHORITY
use Moose qw( with has around );
use Beam::Event qw();
use Beam::Emitter qw();
use Path::Tiny 0.017 qw( path );
use namespace::clean -except => 'meta';
with qw/ Dist::Zilla::Role::Plugin Dist::Zilla::Role::Regenerator Beam::Emitter /;
has filenames => ( is => 'ro', isa => 'ArrayRef', default => sub { [] }, );
around dump_config => sub {
my ( $orig, $self, @args ) = @_;
my $config = $self->$orig(@args);
my $payload = $config->{ +__PACKAGE__ } = {};
$payload->{filenames} = $self->filenames;
## no critic (RequireInterpolationOfMetachars)
# Self report when inherited
$payload->{ q[$] . __PACKAGE__ . '::VERSION' } = $VERSION unless __PACKAGE__ eq ref $self;
return $config;
};
no Moose;
__PACKAGE__->meta->make_immutable;
sub mvp_multivalue_args { qw( filenames ) }
sub mvp_aliases { +{ filename => 'filenames' } }
sub regenerate {
my ( $self, $config ) = @_;
$self->emit( 'before_regenerate', class => 'Dist::Zilla::Event::Regenerate::BeforeRegenerate', %{$config} );
# Note, that because dzil is build -> dir -> archive -> release
# regenerate has to pick files from the "dir" target on disk, and can't go through
# dzil IO
for my $file ( @{ $self->filenames } ) {
my $src = path( $config->{build_root}, $file );
my $dest = path( $config->{root}, $file );
$src->copy($dest);
$self->log("Copied $src to $dest");
}
$self->emit( 'after_regenerate', class => 'Dist::Zilla::Event::Regenerate::AfterRegenerate', %{$config} );
}
{
package # Hide
Dist::Zilla::Event::Regenerate::BeforeRegenerate;
use Moose qw( has extends );
extends q/Beam::Event/;
has 'build_root' => ( isa => 'Str', is => 'ro', required => 1 );
has 'root' => ( isa => 'Str', is => 'ro', required => 1 );
no Moose;
__PACKAGE__->meta->make_immutable;
}
{
package # Hide
Dist::Zilla::Event::Regenerate::AfterRegenerate;
use Moose qw( has extends );
extends q/Beam::Event/;
has 'build_root' => ( isa => 'Str', is => 'ro', required => 1 );
has 'root' => ( isa => 'Str', is => 'ro', required => 1 );
no Moose;
( run in 2.142 seconds using v1.01-cache-2.11-cpan-39bf76dae61 )