App-Framework

 view release on metacpan or  search on metacpan

Makefile.PL  view on Meta::CPAN

requires       'Pod::Usage'		=> 1.33 ;	# Need at least this version or -man won't work!
requires       'Date::Manip';
requires       'Getopt::Long';

#recommends     'DBI' ;

test_requires  'Test::More'  => '0.42';
test_requires  'Test::Pod'  => '1.22';
test_requires  'Test::Pod::Coverage'  => '1.08';
test_requires  'File::Which' ;

no_index       'directory'   => 'examples';


## Optional modules
my %optional = (

	1 => {
		'name'			=> 'Feature::Sql',
		'description'	=> 'MySQL support',
		'requires'		=> {
			'DBI'			=> 0,
			'DBD::mysql'	=> 0,
		},
	},
	2 => {
		'name'			=> 'Feature::Mail',
		'description'	=> 'Mail support',
		'requires'		=> {
			'Net::SMTP'		=> 0,
		},
	},
#	3 => {
#		'name'			=> 'Extension::Daemon',
#		'description'	=> 'Daemon script extension',
#		'requires'		=> {
#			'Net::Server::Daemonize'		=> 0,
#		},
#	},
#	4 => {
#		'name'			=> 'Core::POE',
#		'description'	=> 'POE script personality',
#		'requires'		=> {
#			'POE'		=> 0,
#		},
#	},
) ;

print<<MSG;
$mod provides a number of optional modules which require additional CPAN modules. Please select
from the following which $mod modules you would like to be fully installed and tested (any modules
you do not select will still be available but you will have to manually install any module dependencies).

The optional modules are:
MSG

for my $num (sort { $a <=> $b } keys %optional) 
{
	printf "    [%d] %s - %s\n", $num, $optional{$num}{'name'}, $optional{$num}{'description'} ;
}
my $c = prompt("\nEnter your choices, separated by spaces (0=none, a=all):", "a"); print "\n";


my %to_install ;
if ($c)
{
	if ($c =~ /a/i)
	{
		for my $num (keys %optional) 
		{
			$to_install{$num} = 1 ;
		}
	}
	else
	{
		for my $num (split /\s+/, $c) 
		{
			next unless exists($optional{$num}) ;
			$to_install{$num} = 1 ;
		}
	}
}

my $to_test_str = "" ;
foreach my $num (keys %to_install)
{
	## Add required modules
	foreach my $req (keys %{$optional{$num}{'requires'}})
	{
		my @args = ($req) ;
		push @args, $optional{$num}{'requires'}{$req} if $optional{$num}{'requires'}{$req} ;
		requires(@args) ;
	}

	## Add module		
	$to_test_str .= "$mod\:\:$optional{$num}{name} => 1,\n" ;
}

open my $fh, ">t/config.pm" ;
print $fh <<CONFIG;
package config;
our \%TO_TEST = (
$to_test_str
) ;

1;
CONFIG
close $fh ;



## create extra pod files
sub MY::postamble {

check_new_version() ;

my $rm_install = check_old_version() ;
if ($rm_install)
{
	$rm_install = 
"



( run in 1.227 second using v1.01-cache-2.11-cpan-6aa56a78535 )