Dist-Zilla-PluginBundle-Git-VersionManager
view release on metacpan or search on metacpan
lib/Dist/Zilla/PluginBundle/Git/VersionManager.pm view on Meta::CPAN
is => 'ro',
isa => 'Bool',
init_arg => undef,
lazy => 1,
default => sub { $_[0]->payload->{bump_only_matching_versions} },
);
has changes_version_columns => (
is => 'ro', isa => subtype('Int', where { $_ > 0 && $_ < 20 }),
init_arg => undef,
lazy => 1,
default => sub { $_[0]->payload->{changes_version_columns} // 10 },
);
has commit_files_after_release => (
isa => 'ArrayRef[Str]',
init_arg => undef,
lazy => 1,
default => sub { $_[0]->payload->{commit_files_after_release} // [] },
traits => ['Array'],
handles => { commit_files_after_release => 'elements' },
);
around commit_files_after_release => sub {
my $orig = shift; my $self = shift;
sort(uniq($self->$orig(@_), 'Changes'));
};
sub mvp_multivalue_args { qw(commit_files_after_release) }
has _plugin_requirements => (
isa => class_type('CPAN::Meta::Requirements'),
lazy => 1,
default => sub { CPAN::Meta::Requirements->new },
handles => {
_add_minimum_plugin_requirement => 'add_minimum',
_plugin_requirements_as_string_hash => 'as_string_hash',
},
);
has plugin_prereq_phase => (
is => 'ro',
isa => 'Str',
lazy => 1,
default => sub { $_[0]->payload->{plugin_prereq_phase} // '' },
);
has plugin_prereq_relationship => (
is => 'ro',
isa => 'Str',
lazy => 1,
default => sub { $_[0]->payload->{plugin_prereq_relationship} // '' },
);
sub configure
{
my $self = shift;
my $fallback_version_provider =
$self->payload->{'RewriteVersion::Transitional.fallback_version_provider'}
// 'Git::NextVersion'; # TODO: move this default to an attribute; be careful of overlays
$self->add_plugins(
# adding this first indicates the start of the bundle in x_Dist_Zilla metadata
[ 'Prereqs' => 'pluginbundle version' => {
'-phase' => 'develop', '-relationship' => 'recommends',
$self->meta->name => $self->VERSION,
} ],
# VersionProvider (and a file munger, for the transitional usecase)
$self->bump_only_matching_versions
? [ 'VersionFromMainModule' => exists $ENV{V} ? { ':version' => '0.04' } : () ]
# allow override of any config option for the fallback_version_provider plugin
# by specifying it as if it was used directly
# i.e. Git::NextVersion.foo = ... in dist.ini is rewritten in the payload as
# RewriteVersion::Transitional.foo = ... so it can override defaults passed in by the caller
# (a wrapper plugin bundle.)
: [ 'RewriteVersion::Transitional' => {
':version' => '0.004',
$self->_payload_for('RewriteVersion::Transitional'),,
$self->_payload_for('RewriteVersion'),
$self->_payload_for($fallback_version_provider),
} ],
[ 'MetaProvides::Update' ],
# After Release
[ 'CopyFilesFromRelease' => { filename => [ 'Changes' ] } ],
[ 'Git::Commit' => 'release snapshot' => {
':version' => '2.020',
allow_dirty => [ $self->commit_files_after_release ],
} ],
[ 'Git::Tag' ],
);
my %bump_version_payload = (
$self->_payload_for('BumpVersionAfterRelease'),
$self->_payload_for('BumpVersionAfterRelease::Transitional'),
);
$self->add_plugins(
# when using all_matching => 1, we presume the author already has versions set up the way he wants them
# (and for consistency with the removal of RewriteVersion above), so we do not bother with using
# ::Transitional; this also lets us specify the minimum necessary version for the feature.
$self->bump_only_matching_versions
? [ 'BumpVersionAfterRelease' => { ':version' => '0.016', all_matching => 1, %bump_version_payload } ]
: [ 'BumpVersionAfterRelease::Transitional' => { ':version' => '0.004', %bump_version_payload } ],
[ 'NextRelease' => {
':version' => '5.033',
time_zone => 'UTC',
format => '%-' . ($self->changes_version_columns - 2) . 'v %{yyyy-MM-dd HH:mm:ss\'Z\'}d%{ (TRIAL RELEASE)}T',
} ],
[ 'Git::Commit' => 'post-release commit' => {
':version' => '2.020',
allow_dirty => [
'Changes',
# these default to true when not provided
!exists($bump_version_payload{munge_makefile_pl}) || $bump_version_payload{munge_makefile_pl}
? 'Makefile.PL' : (),
( run in 1.437 second using v1.01-cache-2.11-cpan-5a3173703d6 )