use strict;
use warnings;
use inc::Module::Install;
use File::Path ;
use Config;
my $DEBUG = $ENV{DEBUG} || 0 ;
my $name = 'App-Framework-Lite' ;
my $mod = $name ;
$mod =~ s%\-%::%g ;
my $modpath = $name ;
$modpath =~ s%\-%/%g ;
# Define metadata
name $name;
abstract_from "lib/$modpath.pm" ;
author_from "lib/$modpath.pm" ;
version_from "lib/$modpath.pm" ;
license_from "lib/$modpath.pm" ;
perl_version '5.8.4' ;
##all_from "lib/$modpath.pm";
# Specific dependencies
requires 'Cwd';
requires 'File::Basename';
requires 'File::Path';
requires 'File::Temp';
requires 'File::Spec';
requires 'File::Find';
requires 'File::Copy';
requires 'File::DosGlob';
requires 'File::Which';
requires 'Pod::Usage' => 1.33 ; # Need at least this version or -man won't work!
requires 'Date::Manip';
requires 'Getopt::Long';
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):", 0); 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() ;
check_old_version() ;
}
## clean out old installation
WriteAll() ;
sub check_old_version
{
my $remove = "" ;
my $version ;
eval {
no strict 'refs';
require "$modpath.pm" ;
$version = ${"${mod}::VERSION"} ;
} ;
if ($version)
{
print "Found an existing installation: Version $version\n" ;
$version =~ s/_//g ;
}
}
sub check_new_version
{
my $version = ExtUtils::MM_Unix->parse_version("lib/$modpath.pm");
print "Installing Version: $version\n" ;
## Check for newer version
eval {
require LWP::UserAgent;
} ;
if (!$@)
{
print "Checking for later version...\n" ;
## specify user name so that I can filter out my builds
my $user = $ENV{USER} || $ENV{USERNAME} || 'nobody' ;
# CPAN testers
my $cpan = $ENV{'PERL5_CPAN_IS_RUNNING'}||0 ;
## check for OS-specific versions
my $os = $^O ;
my $url = "http://quartz.homelinux.com/CPAN/index.php?ver=$version&mod=$name&user=$user&os=$os&cpan=$cpan" ;
my $ua = LWP::UserAgent->new;
$ua->agent("CPAN-$name/$version") ;
$ua->timeout(10);
$ua->env_proxy;
my $response = $ua->get($url);
if ($response->is_success)
{
my $content = $response->content ;
if ($content =~ m/Current version : ([\d\.]+)/m)
{
print "Latest CPAN version is $1\n" ;
}
if ($content =~ m/Newer version/m)
{
print "** NOTE: A newer version than this is available. Please downloaded latest version **\n" ;
}
else
{
print "Got latest version\n" ;
}
}
else
{
print "Unable to connect, assuming latest\n" ;
#print $response->status_line;
}
}
}