App-Midgen

 view release on metacpan or  search on metacpan

lib/App/Midgen/Role/Output/MI.pm  view on Meta::CPAN

package App::Midgen::Role::Output::MI;

use constant {NONE => q{},};

use Moo::Role;
requires qw( no_index 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_mi
#######
sub header_mi {
	my $self         = shift;
	my $package_name = shift || NONE;
	my $mi_ver       = shift || NONE;

	print "\nuse strict;\n";
	print "use warnings;\n";
	print "use inc::Module::Install " . colored($mi_ver, 'yellow') . ";\n";

	if ($package_name ne NONE) {
		$package_name =~ s{::}{-}g;
		print "name '$package_name';\n";
		$package_name =~ tr{-}{/};
		print "all_from 'lib/$package_name.pm';\n";
	}

	print BRIGHT_BLACK . "license 'perl';" . CLEAR . "\n";
	return;
}
#######
# body_mi
#######
sub body_mi {
	my $self         = shift;
	my $title        = shift;
	my $required_ref = shift || return;

	return if not %{$required_ref};

	my $pm_length = 0;
	foreach my $module_name (sort keys %{$required_ref}) {
		if (length $module_name > $pm_length) {
			$pm_length = length $module_name;
		}
	}

	print "perl_version '$App::Midgen::Min_Version';\n" if $title eq 'RuntimeRequires';
	print "\n";

	$title =~ s/^RuntimeRequires/requires/;
	$title =~ s/^TestRequires/test_requires/;

	foreach my $module_name (sort keys %{$required_ref}) {

		next
			if $title eq 'test_requires'
			&& $required_ref->{$module_name} =~ m/mcpan/;

		if ($module_name =~ /^Win32/sxm) {
			my $sq_key = "'$module_name'";
			printf "%s %-*s => '%s' %s;\n", $title, $pm_length + 2, $sq_key,
				$required_ref->{$module_name}, colored('if win32', 'bright_green');



( run in 0.862 second using v1.01-cache-2.11-cpan-5837b0d9d2c )