App-Midgen

 view release on metacpan or  search on metacpan

lib/App/Midgen.pm  view on Meta::CPAN


	return;
}


#######
# find_runtime_modules
#######
sub find_runtime_modules {
	my $self = shift;

	my @posiable_directories_to_search
		= map { File::Spec->catfile($Working_Dir, $_) }
		qw( bin share script lib );

	my @directories_to_search = ();
	foreach my $directory (@posiable_directories_to_search) {
		if (defined -d $directory) {
			push @directories_to_search, $directory;
		}
	}
	p @directories_to_search if $self->debug;

	try {
		find(sub { _find_runtime_requirments($self); }, @directories_to_search);
	};

	return;

}
#######
# _find_runtime_requirments
#######
sub _find_runtime_requirments {
	my $self     = shift;
	my $filename = $_;

	return if $self->is_perlfile($filename) == FALSE;
 
	my $relative_dir = $File::Find::dir;
	$relative_dir =~ s/$Working_Dir//;
	$self->_set_looking_infile(File::Spec->catfile($relative_dir, $filename));
	$self->_set_ppi_document(PPI::Document->new($filename));

	# do extra test early check for use_module before hand
	$self->xtests_use_module('RuntimeRecommends');

	# ToDo add eval/try here -> prereqs { runtime { suggests or recommends {...}}}
	$self->xtests_eval('RuntimeRecommends');

	# normal pps -> RuntimeRequires
	my $prereqs = $self->scanner->scan_ppi_document($self->ppi_document);
	my @modules = $prereqs->required_modules;


	foreach my $mod_ver (@modules) {
		$self->{found_version}{$mod_ver}
			= $prereqs->requirements_for_module($mod_ver);
	}

	$self->{skip_not_mcpan_stamp} = 0;

	if (grep { $_ =~ m/^Dist::Zilla::Role::PluginBundle/ } @modules) {

		$self->{skip_not_mcpan_stamp} = 1;

		my $ppi_tqs = $self->ppi_document->find('PPI::Token::Quote::Single');
		if ($ppi_tqs) {

			foreach my $include (@{$ppi_tqs}) {

				my $module = $include->content;
				$module =~ s/^[']//;
				$module =~ s/[']$//;

				next if $module =~ m/^Dist::Zilla::Role::PluginBundle/;
				next if $module =~ m{\A[-|:|\d]};
				next if $module !~ m{\A(?:[[a-zA-Z])};
				next if $module =~ m{[.|$|\\|/|\-|\[|%|@|]};
				next if $module eq NONE;

				push @modules, 'Dist::Zilla::Plugin::' . $module;
			}
		}
	}

	if (scalar @modules > 0) {
		for (0 .. $#modules) {
			try {
				$self->_process_found_modules('RuntimeRequires', $modules[$_],
					$prereqs->requirements_for_module($modules[$_]),
					'Perl::PrereqScanner', 'RuntimeRequires',);
			};
		}
	}

	#run pmv now
	$self->min_version($self->looking_infile) if $self->format ne 'infile';

	return;
}


#######
# find_test_modules
#######
sub find_test_modules {
	my $self = shift;

	my $directory = 't';
	if (defined -d $directory) {

		find(sub { _find_test_develop_requirments($self, $directory); },
			$directory);

	}

	return;

}
#######
# find_develop_modules
#######
sub find_develop_modules {
	my $self = shift;

lib/App/Midgen.pm  view on Meta::CPAN

			next;
		}
		elsif ($module =~ /^inc::Module::Install/sxm) {

			# don't inc::Module::Install as it is really Module::Install
			next;
		}
		elsif ($module =~ /Mojo/sxm) {
			if ($self->experimental) {
				if ($self->_check_mojo_core($module, $require_type)) {
					if (not $self->quiet) {
						print BRIGHT_BLACK;
						print "swapping out $module for Mojolicious\n";
						print CLEAR;
					}
					next;
				}
			}
		}
		elsif ($module =~ /^Padre/sxm) {

			# mark all Padre core as just Padre only, for plugins
			$module = 'Padre';
		}
	}

	# lets keep track of how many times a module include is found
	$self->{modules}{$module}{count} += 1;
	try {
		push @{$self->{modules}{$module}{infiles}},
			[$self->looking_infile(), $version, $extra_scanner, $pr_location,];
	};

	# don't process already found modules
	p $self->{modules}{$module}{prereqs} if $self->debug;

	next if defined $self->{modules}{$module}{prereqs};
	p $module if $self->debug;

	# add skip for infile as we don't need to get v-string from metacpan-api
	$self->_store_modules($require_type, $module) if $self->format ne 'infile';

	return;
}

#######
# composed method - _store_modules
#######
sub _store_modules {
	my $self         = shift;
	my $require_type = shift;
	my $module       = shift;
	p $module if $self->debug;

	$self->_in_corelist($module)
		if not defined $self->{modules}{$module}{corelist};
	my $version = $self->get_module_version($module, $require_type);

	if ($version eq '!mcpan') {
		$self->{$require_type}{$module} = colored('!mcpan', 'magenta')
			if not $self->{skip_not_mcpan_stamp};
		$self->{modules}{$module}{prereqs} = $require_type;
		$self->{modules}{$module}{version} = '!mcpan';
	}
	elsif ($version eq 'core') {
		$self->{$require_type}{$module} = $version if $self->core;
		$self->{$require_type}{$module} = '0'      if $self->zero;
		$self->{modules}{$module}{prereqs} = $require_type;
		$self->{modules}{$module}{version} = $version if $self->core;
	}
	else {
		if ($self->{modules}{$module}{corelist}) {

			$self->{$require_type}{$module} = colored($version, 'bright_yellow')
				if ($self->dual_life || $self->core);
			$self->{modules}{$module}{prereqs} = $require_type
				if ($self->dual_life || $self->core);
			$self->{modules}{$module}{version} = $version
				if ($self->dual_life || $self->core);
			$self->{modules}{$module}{dual_life} = 1;
			$self->{modules}{$module}{prereqs} = $require_type;
			$self->{modules}{$module}{version} = $version;

		}
		else {
			$self->{$require_type}{$module} = colored($version, 'yellow');
			$self->{$require_type}{$module}
				= colored(version->parse($version)->numify, 'yellow')
				if $self->numify;

			$self->{modules}{$module}{prereqs} = $require_type;
			$self->{modules}{$module}{version} = $version;

			$self->{$require_type}{$module} = colored($version, 'bright_cyan')
				if $self->{modules}{$module}{'distribution'};
		}
	}
	p $self->{modules}{$module} if $self->debug;

	return;
}

#######
# composed method _in_corelist
#######
sub _in_corelist {
	my $self   = shift;
	my $module = shift;

	#return TRUE (1) if defined $self->{modules}{$module}{corelist};

	# hash with core modules to process regardless
	my $ignore_core = {'File::Path' => 1, 'Test::More' => 1,};

	if (!$ignore_core->{$module}) {

		if ( Module::CoreList->first_release($module) ) {
			$self->{modules}{$module}{corelist} = 1;
			return TRUE;
		}
		else {



( run in 1.414 second using v1.01-cache-2.11-cpan-39bf76dae61 )