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 )