use
5.014;
with
(
'Dist::Zilla::Role::PluginBundle::Easy'
,
'Dist::Zilla::Role::PluginBundle::PluginRemover'
,
'Dist::Zilla::Role::PluginBundle::Config::Slicer'
,
);
our
$VERSION
=
'0.014'
;
sub
configure {
my
(
$self
) =
@_
;
die
"CPAN::Mini::Inject::REST hostname must be set in mcpani_host"
if
not
$self
->payload->{mcpani_host};
my
$remove
=
$self
->payload->{
$self
->plugin_remover_attribute } || [];
$self
->add_plugins(
[
'Git::GatherDir'
=>
GatherActualCode
=> {
exclude_filename
=> [
qw( LICENSE )
]
}
],
[
CopyFilesFromBuild
=>
CopyLicenseAndThings
=> {
copy
=> [
qw( LICENSE )
]
}
],
qw(
Prereqs::FromCPANfile
PodWeaver
)
);
$self
->add_bundle(
'@Starter'
, {
'-remove'
=> [
'GatherDir'
,
'UploadToCPAN'
,
'TestRelease'
,
@$remove
],
});
$self
->add_plugins(
qw(
CheckChangesHasContent
RewriteVersion
NextRelease
Repository
)
,
[
Encoding
=>
CommonBinaryFiles
=> {
match
=>
'\.(png|jpg|db)$'
,
encoding
=>
'bytes'
} ],
[
'Git::Commit'
=>
CommitGeneratedFiles
=> {
allow_dirty
=> [
qw/dist.ini Changes cpanfile LICENSE/
]
} ],
'ExecDir'
,
[
ExecDir
=>
ScriptDir
=> {
dir
=>
'script'
}
],
qw(
Git::Tag
BumpVersionAfterRelease
)
,
[
'Git::Commit'
=>
CommitVersionBump
=> {
allow_dirty_match
=>
'^lib/'
,
commit_msg
=>
"Bumped version number"
} ],
'Git::Push'
,
[
'CPAN::Mini::Inject::REST'
=>
$self
->config_slice({
mcpani_host
=>
'host'
,
mcpani_port
=>
'port'
,
mcpani_protocol
=>
'protocol'
,
}) ],
[
Prereqs
=>
'TestMoreWithSubtests'
=> {
-phase
=>
'test'
,
-type
=>
'requires'
,
'Test::More'
=>
'0.96'
} ],
);
}
__PACKAGE__->meta->make_immutable;
no
Moose;
1;
=encoding utf8
=head1 NAME
Dist::Zilla::PluginBundle::Author::OpusVL - Standard behaviour
for
OpusVL modules
=head1 SYNOPSIS
In your F<dist.ini>:
[
@Author::OpusVL
]
mcpani_host = some.cpan.host
=head1 DESCRIPTION
This generally implements the workflow that OpusVL modules will
use
.
It is roughly equivalent to:
[Git::GatherDir]
[
@Starter
]
; ...but without GatherDir and UploadToCPAN or TestRelease
[Prereqs::FromCPANfile]
[CheckChangesHasContent]
[RewriteVersion]
[NextRelease]
[Repository]
[PodWeaver]
finder = :InstallModules
[Git::Commit / CommitGeneratedFiles]
allow_dirty = dist.ini
allow_dirty = Changes
allow_dirty = cpanfile
allow_dirty = LICENSE
[ExecDir]
dir = script
[Git::Tag]
[BumpVersionAfterRelease]
[Git::Commit / CommitVersionBump]
allow_dirty_match = ^lib/
commit_msg =
"Bumped version number"
[Git::Push]
[CPAN::Mini::Inject::REST]
[Prereqs / TestMoreWithSubtests]
-phase = test
-type = requires
Test::More = 0.96
Your module files should contain:
our
$VERSION
=
'0.001'
;
For PodWeaver (the ABSTRACT) and RewriteVersion (the
$VERSION
).
Your script files should additionally contain
Modules and scripts should thus not contain a NAME section in their POD.
=head1 TODO
The two modules in this distribution need to be
split
into roles so we don't
have to provide dummy data
for
mcpani_host in the ToCPAN version that doesn't