App-Midgen
view release on metacpan or search on metacpan
lib/App/Midgen/Role/FindMinVersion.pm view on Meta::CPAN
package App::Midgen::Role::FindMinVersion;
use constant { ONE => 1, TWO => 2, TRUE => 1, FALSE => 0,};
use Types::Standard qw( Bool );
use Moo::Role;
requires qw( ppi_document debug experimental verbose );
our $VERSION = '0.34';
$VERSION = eval $VERSION; ## no critic
use Perl::MinimumVersion;
use Try::Tiny;
use Term::ANSIColor qw( :constants colored colorstrip );
use version;
use Data::Printer {caller_info => 1,};
has 'mro_skip' => (
is => 'rwp',
isa => Bool,
lazy => 1,
default => sub { 0; },
);
#######
# find min perl version - pmv
######
sub min_version {
my $self = shift;
my $filename = shift;
$filename =~ s{^/}{};
my $dist_min_ver = $App::Midgen::Min_Version;
my $object;
try {
$object = Perl::MinimumVersion->new($self->ppi_document);
};
# Find the minimum version
try {
$dist_min_ver
= version->parse($dist_min_ver)
> version->parse($object->minimum_version)
? version->parse($dist_min_ver)
: version->parse($object->minimum_version);
};
try {
$dist_min_ver
= version->parse($dist_min_ver)
> version->parse($object->minimum_explicit_version)
? version->parse($dist_min_ver)
: version->parse($object->minimum_explicit_version);
};
try {
$dist_min_ver
= version->parse($dist_min_ver)
> version->parse($object->minimum_syntax_version)
? version->parse($dist_min_ver)
: version->parse($object->minimum_syntax_version);
};
try {
my $blame = $object->minimum_syntax_reason->element->content;
if ($blame =~ m/\bmro[\s|;]/) {
$self->_set_mro_skip(TRUE);
print BRIGHT_BLACK
. 'Info: PMV blame = '
. $blame
( run in 1.453 second using v1.01-cache-2.11-cpan-75ffa21a3d4 )