App-Midgen
view release on metacpan or search on metacpan
lib/App/Midgen/Role/Output/CPANfile.pm view on Meta::CPAN
package App::Midgen::Role::Output::CPANfile;
use constant {NONE => q{}, THREE => 3,};
use Moo::Role;
requires qw( verbose );
# Load time and dependencies negate execution time
# use namespace::clean -except => 'meta';
our $VERSION = '0.34';
$VERSION = eval $VERSION; ## no critic
use English qw( -no_match_vars ); # Avoids reg-ex performance penalty
local $OUTPUT_AUTOFLUSH = 1;
use Term::ANSIColor qw( :constants colored );
use File::Spec;
#######
# header_cpanfile
#######
sub header_cpanfile {
my $self = shift;
my $package_name = shift || NONE;
my $mi_ver = shift || NONE;
return;
}
#######
# body_cpanfile
#######
sub body_cpanfile {
my $self = shift;
my $title = shift || return;
my $required_ref = shift || return;
my $pm_length = 0;
foreach my $module_name (sort keys %{$required_ref}) {
if (length $module_name > $pm_length) {
$pm_length = length $module_name;
}
}
if ($title eq 'RuntimeRequires') {
print "\n";
$required_ref->{'perl'} = $App::Midgen::Min_Version;
foreach my $module_name (sort keys %{$required_ref}) {
my $mod_name = "'$module_name',";
printf "%s %-*s '%s';\n", 'requires', $pm_length + THREE, $mod_name,
$required_ref->{$module_name}
if $required_ref->{$module_name} !~ m/mcpan/;
}
}
elsif ($title eq 'RuntimeRecommends') {
print "\n";
foreach my $module_name (sort keys %{$required_ref}) {
my $mod_name = "'$module_name',";
printf "%s %-*s '%s';\n", 'recommends', $pm_length + THREE, $mod_name,
$required_ref->{$module_name}
if $required_ref->{$module_name} !~ m/mcpan/;
}
}
elsif ($title eq 'TestRequires') {
print "\non test => sub {\n";
foreach my $module_name (sort keys %{$required_ref}) {
my $mod_name = "'$module_name',";
printf "\t%s %-*s '%s';\n", 'requires', $pm_length + THREE, $mod_name,
$required_ref->{$module_name}
if $required_ref->{$module_name} !~ m/mcpan/;
( run in 2.827 seconds using v1.01-cache-2.11-cpan-75ffa21a3d4 )