App-Midgen
view release on metacpan or search on metacpan
lib/App/Midgen/Role/Heuristics.pm view on Meta::CPAN
package App::Midgen::Role::Heuristics;
our $VERSION = '0.34';
$VERSION = eval $VERSION; ## no critic
use constant {TRUE => 1, FALSE => 0, ONE => 1, TWO => 2};
use Types::Standard qw( Bool );
use Moo::Role;
requires qw( debug meta2 format );
use Try::Tiny;
use Data::Printer {caller_info => 1,};
use Term::ANSIColor qw( :constants colored colorstrip );
#######
# correct incorrectly cast modules as RuntimeRecommends and re-cast as RuntimeRequires
# recast_to_runtimerequires
#######
sub recast_to_runtimerequires {
my $self = shift;
my $requires_ref = shift || return;
my $recommends_ref = shift || return;
#extract module names to check from RuntimeRecommends bucket
my @runtime_recommends;
foreach my $current_recommends (sort keys %{$recommends_ref}) {
push @runtime_recommends, $current_recommends;
}
foreach my $module (@runtime_recommends) {
#2nd part of mro - MRO::Compat catch
if ( $module eq 'MRO::Compat' and $self->meta2 == FALSE ) {
print "recasting - $module\n" if ($self->verbose == TWO);
# add to RuntimeRequires bucket
$requires_ref->{$module} = $recommends_ref->{$module};
# delete from RuntimeRecommends bucket
delete $recommends_ref->{$module};
# update modules bucket
$self->{modules}{$module}{prereqs} = 'RuntimeRequires';
}
# an ode to negitave logic :)
try {
unless ($self->{modules}{$module}{dual_life}
or $self->{modules}{$module}{corelist} == 1
or $self->{modules}{$module}{version} eq '!mcpan'
or $self->{modules}{$module}{count} == 1)
{
if ($self->_rc_requires($module, $self->{modules}{$module}{infiles}))
{
# add to RuntimeRequires bucket
$requires_ref->{$module} = $recommends_ref->{$module};
# delete from RuntimeRecommends bucket
delete $recommends_ref->{$module};
# update modules bucket
$self->{modules}{$module}{prereqs} = 'RuntimeRequires';
print BRIGHT_BLACK
. 'Info: re-cast module '
. $module
. ' to RuntimeRequires'
. CLEAR . "\n" if ($self->verbose >= ONE);
( run in 0.680 second using v1.01-cache-2.11-cpan-0bb4e1dffa6 )