; VERSION
[Git::NextVersion]
- [NextRelease]
- [ReversionOnRelease]
- prompt = 1
-
- [ExecDir]
- [ExtraTests]
; GATHER
[Git::GatherDir]
[CopyFilesFromBuild]
copy = LICENSE
+ [ExecDir]
; PREREQS
[AutoPrereqs]
[PodSyntaxTests]
[Test::Pod::No404s]
[Test::Compile]
+ [Test::MinimumVersion]
+ max_target_perl = 5.10.1
[Test::EOL]
[Test::NoTabs]
[Test::Perl::Critic]
filename = README
location = build
type = text
- [TravisYML]
[Manifest]
[ManifestSkip]
[MakeMaker] ; override with the "installer" attribute
; RELEASE
+ [NextRelease]
[CheckChangesHasContent]
[Git::Check]
+ [RunExtraTests]
[TestRelease]
[ConfirmRelease]
[UploadToCPAN] ; disable with the "no_upload" attribute
=cut
+use 5.014;
use warnings;
use strict;
use Dist::Zilla::Util;
use Moose;
+use Perl::Version;
use namespace::autoclean;
+=attr max_target_perl
+
+Specify the minimum perl version. Defaults to C<5.10.1>.
+
+=cut
+
+has max_target_perl => (
+ is => 'ro',
+ isa => 'Str',
+ lazy => 1,
+ default => sub {
+ my $self = shift;
+ $self->payload->{'Test::MinimumVersion.max_target_perl'}
+ // $self->payload->{max_target_perl}
+ // '5.10.1';
+ },
+);
+
+=attr no_index
+
+Set directories to not index.
+
+Default:
+
+=cut
+
+has no_index => (
+ is => 'ro',
+ isa => 'ArrayRef',
+ lazy => 1,
+ default => sub {
+ my $self = shift;
+ [split(/\s+/, $self->payload->{'MetaNoIndex.directories'}
+ // $self->payload->{no_index}
+ // 'eg share shares t xt')];
+ },
+);
+
+=attr authority
+
+Specify the release authority. Defaults to C<cpan:CCM>.
+
+=cut
+
+has authority => (
+ is => 'ro',
+ isa => 'Str',
+ lazy => 1,
+ default => sub {
+ my $self = shift;
+ $self->payload->{'Authority.authority'} // $self->payload->{authority} // 'cpan:CCM';
+ },
+);
+
=attr installer
Specify which installer to use, such as:
is => 'ro',
isa => 'Str',
lazy => 1,
- default => sub { shift->payload->{installer} || 'MakeMaker' },
+ default => sub { shift->payload->{installer} // 'MakeMaker' },
);
=attr airplane
=attr no_upload
-Do not upload to CPAN.
+Do not upload to CPAN or git push.
=cut
is => 'ro',
isa => 'Bool',
lazy => 1,
- default => 0,
+ default => sub { $ENV{DZIL_NO_UPLOAD} // shift->payload->{no_upload} // 0 },
);
=method configure
sub configure {
my $self = shift;
- my @copy_from_build = qw(LICENSE);
- my @network_plugins = qw(Git::Push Test::Pod::No404s UploadToCPAN);
- my @gather_exclude = (@copy_from_build, qw(README.md));
- my @gather_prune = qw(dist.ini);
- my @no_index = qw(eg share shares t xt);
- my @allow_dirty = (@copy_from_build, qw(.travis.yml Changes LICENSE README.md));
- my @git_remotes = qw(github origin);
- my @check_files = qw(:InstallModules :ExecFiles :TestFiles :ExtraTestFiles);
+ my @copy_from_build = qw(LICENSE);
+ my @network_plugins = qw(Git::Push Test::Pod::No404s UploadToCPAN);
+ my @gather_exclude = (@copy_from_build, qw(README.md));
+ my @gather_prune = qw(dist.ini);
+ my @no_index = @{$self->no_index};
+ my @allow_dirty = (@copy_from_build, qw(Changes LICENSE README.md));
+ my @git_remotes = qw(github origin);
+ my @check_files = qw(:InstallModules :ExecFiles :TestFiles :ExtraTestFiles);
+ my $perl_version_target = $self->max_target_perl;
+
+ if ($self->no_upload) {
+ say '[@Author::CCM] WARNING! WARNING! WARNING! *** You are in no_upload mode!! ***';
+ }
my @plugins = (
# VERSION
['Git::NextVersion'],
- ['NextRelease'],
- ['ReversionOnRelease' => {prompt => 1}],
-
- ['ExecDir'],
- ['ExtraTests'],
# GATHER
['Git::GatherDir' => {exclude_filename => [@gather_exclude]}],
['PruneFiles' => {filename => [@gather_prune]}],
['CopyFilesFromBuild' => {copy => [@copy_from_build]}],
+ ['ExecDir'],
# PREREQS
['AutoPrereqs'],
['PodSyntaxTests'],
['Test::Pod::No404s'],
['Test::Compile'],
+ ['Test::MinimumVersion' => {max_target_perl => $perl_version_target}],
['Test::EOL' => {finder => [@check_files]}],
['Test::NoTabs' => {finder => [@check_files]}],
['Test::Perl::Critic'],
['Test::ReportPrereqs'],
# METADATA
- ['Authority' => {do_munging => 0}],
+ ['Authority' => {authority => $self->authority, do_munging => 0}],
['MetaJSON'],
['MetaYAML'],
['MetaNoIndex' => {directory => [@no_index]}],
# GENERATE FILES
['License'],
- ['ReadmeAnyFromPod' => 'repo readme' => {filename => 'README.md', location => 'root', type => 'markdown', phase => 'release'}],
- ['ReadmeAnyFromPod' => 'dist readme' => {filename => 'README', location => 'build', type => 'text'}],
- ['TravisYML'],
+ ['ReadmeAnyFromPod' => 'RepoReadme' => {filename => 'README.md', location => 'root', type => 'markdown', phase => 'release'}],
+ ['ReadmeAnyFromPod' => 'DistReadme' => {filename => 'README', location => 'build', type => 'text'}],
['Manifest'],
['ManifestSkip'],
$self->installer, # e.g. MakeMaker
# RELEASE
+ ['NextRelease' => {format => '%-9v %{yyyy-MM-dd HH:mm:ssZZZ}d%{ (TRIAL RELEASE)}T'}],
['CheckChangesHasContent'],
['Git::Check' => {allow_dirty => [@allow_dirty], untracked_files => 'ignore'}],
+ ['RunExtraTests'],
['TestRelease'],
# ['ConfirmRelease'],
$self->no_upload ? ['FakeRelease'] : ['UploadToCPAN'],
['Git::Commit' => {allow_dirty => [@allow_dirty], commit_msg => 'Release %N %v%t%n%n%c'}],
['Git::CommitBuild' => {branch => '', release_branch => 'dist', release_message => 'Version %v%t'}],
['Git::Tag' => {tag_message => 'Version %v%t%n%n%c'}],
- ['Git::Push' => {push_to => 'origin master +master:refs/heads/release +dist', remotes_must_exist => 0}],
+ $self->no_upload ? () : ['Git::Push' => {push_to => 'origin master +master:refs/heads/release +dist', remotes_must_exist => 0}],
);