Dist-Zilla-Plugin-RewriteVersion-Transitional
view release on metacpan or search on metacpan
lib/Dist/Zilla/Plugin/RewriteVersion/Transitional.pm view on Meta::CPAN
use strict;
use warnings;
package Dist::Zilla::Plugin::RewriteVersion::Transitional; # git description: v0.008-7-g50b6f0b
# vim: set ts=8 sts=4 sw=4 tw=115 et :
# ABSTRACT: Ease the transition to [RewriteVersion] in your distribution
# KEYWORDS: plugin version rewrite munge module
our $VERSION = '0.009';
use Moose;
extends 'Dist::Zilla::Plugin::RewriteVersion';
with 'Dist::Zilla::Role::InsertVersion';
use Moose::Util::TypeConstraints 'role_type';
use Dist::Zilla::Util;
use Module::Runtime 'use_module';
use Term::ANSIColor 'colored';
use namespace::autoclean;
has fallback_version_provider => (
is => 'ro', isa => 'Str',
lazy => 1,
default => sub {
shift->log('tried to provide a version, but fallback_version_provider configuration is missing');
return '';
},
);
has _fallback_version_provider_args => (
is => 'ro', isa => 'HashRef[Str]',
);
has _fallback_version_provider_obj => (
is => 'ro',
isa => role_type('Dist::Zilla::Role::VersionProvider'),
lazy => 1,
default => sub {
my $self = shift;
use_module(Dist::Zilla::Util->expand_config_package_name($self->fallback_version_provider))->new(
zilla => $self->zilla,
plugin_name => 'fallback version provider, via [RewriteVersion::Transitional]',
%{ $self->_fallback_version_provider_args },
);
},
predicate => '_using_fallback_version_provider',
);
around BUILDARGS => sub
{
my $orig = shift;
my $self = shift;
my $args = $self->$orig(@_);
my %extra_args = %$args;
delete @extra_args{ map { $_->name } $self->meta->get_all_attributes };
return +{ %$args, _fallback_version_provider_args => \%extra_args };
};
around dump_config => sub
{
my ($orig, $self) = @_;
my $config = $self->$orig;
$config->{+__PACKAGE__} = {
$self->_using_fallback_version_provider
? ( map { $_ => $self->$_ } qw(fallback_version_provider _fallback_version_provider_args) )
: (),
blessed($self) ne __PACKAGE__ ? ( version => $VERSION ) : (),
};
$config->{ $self->fallback_version_provider } = $self->_fallback_version_provider_obj->dump_config
if $self->_using_fallback_version_provider;
return $config;
};
around provide_version => sub
{
my $orig = shift;
my $self = shift;
return if $self->can('skip_version_provider') and $self->skip_version_provider;
my $version = $self->$orig(@_);
return $version if defined $version;
# if we have no fallback_version_provider, ether they forgot to set it (probably in a bundle that uses us), or
# the version is already being provided some other way (hardcoded in dist.ini?) and we shouldn't even be here.
( run in 1.241 second using v1.01-cache-2.11-cpan-39bf76dae61 )