package Dist::Zilla::Plugin::ModuleBuildTiny;
{
$Dist::Zilla::Plugin::ModuleBuildTiny::VERSION = '0.006';
}
use Moose;
with qw/Dist::Zilla::Role::BuildPL Dist::Zilla::Role::TextTemplate Dist::Zilla::Role::PrereqSource/;
use Dist::Zilla::File::InMemory;
use Module::Metadata;
use MooseX::Types::Moose qw/Str/;
has version => (
is => 'ro',
isa => Str,
default => sub {
return Module::Metadata->new_from_module('Module::Build::Tiny')->version->stringify;
},
);
has minimum_perl => (
is => 'ro',
isa => Str,
lazy => 1,
default => sub {
my $self = shift;
return $self->zilla->prereqs->requirements_for('runtime', 'requires')->requirements_for_module('perl') || '5.006'
},
);
my $template = <<'BUILD_PL';
# This Build.PL for {{ $dist_name }} was generated by {{ $plugin_title }}.
use {{ $minimum_perl }};
use Module::Build::Tiny {{ $version }};
Build_PL();
BUILD_PL
sub register_prereqs {
my ($self) = @_;
$self->zilla->register_prereqs({ phase => 'configure' }, 'Module::Build::Tiny' => $self->version);
return;
}
sub setup_installer {
my ($self, $arg) = @_;
confess "Module::Build::Tiny is currently incompatible with dynamic_config" if $self->zilla->distmeta->{dynamic_config};
for my $map (map { $_->share_dir_map } @{$self->zilla->plugins_with(-ShareDir)}) {
$self->log_fatal('Unsupported use of a module sharedir') if exists $map->{module};
$self->log_fatal('Sharedir location must be share/') if defined $map->{dist} and $map->{dist} ne 'share';
}
my $content = $self->fill_in_string($template, {
version => $self->version,
minimum_perl => $self->minimum_perl,
dist_name => $self->zilla->name,
plugin_title => ref($self) . ' ' . $self->VERSION,
});
my $file = Dist::Zilla::File::InMemory->new({ name => 'Build.PL', content => $content });
$self->add_file($file);
return;
}
__PACKAGE__->meta->make_immutable;
no Moose;
1;
# ABSTRACT: Build a Build.PL that uses Module::Build::Tiny
__END__
=pod
=encoding UTF-8
=head1 NAME
Dist::Zilla::Plugin::ModuleBuildTiny - Build a Build.PL that uses Module::Build::Tiny
=head1 VERSION
version 0.006
=head1 DESCRIPTION
This plugin will create a F<Build.PL> for installing the dist using L<Module::Build::Tiny>.
=head1 ATTRIBUTES
=head2 version
B<Optional:> Specify the minimum version of L<Module::Build::Tiny> to depend on.
Defaults to the version installed on the author's perl installation
=head2 minimum_perl
B<Optional:> Specify the minimum version of perl to require in the F<Build.PL>.
This is normally taken from dzils prereq metadata.
# vim: set ts=4 sw=4 noet nolist :
=head1 AUTHOR
Leon Timmermans <fawaka@gmail.com>
=head1 COPYRIGHT AND LICENSE
This software is copyright (c) 2011 by Leon Timmermans.
This is free software; you can redistribute it and/or modify it under
the same terms as the Perl 5 programming language system itself.
=cut