use ExtUtils::MakeMaker; require 5.006_001; use IO::Handle; my @optional = ( [ Template::Magic => '1.02', reason => <<'REASON' ] Required if you want to use the Template::Magic formatter, which is not required to run the examples. REASON , [ Image::Magick => '5.0', reason => <<'REASON', warning => <<'WARN' ] When messages contain images, these images can be shown as small previews. This is done with Image::Magick, which is quite hard to install (IMHO). So if you want to give it a try answer yes. REASON If you do not install Image::Magick, some examples will not work. But you can always install it later. WARN ); my %prereq = ( Mail::Box => 2.051 # used everywhere , HTML::FromText => 2.03 # for HTML::FromMail::Default::HTMLifiers , OODoc::Template => 0.01 # default template system , Test::Pod => 1.00 ); my $has_readkey; BEGIN { eval "require Term::ReadKey"; $has_readkey = not length $@; } my $default_install_answer = $ENV{INSTALL_HTMLFROMMAIL_OPTIONALS} || (-t STDIN ? 'y' : 'n'); print <<'INTRO'; * **** Installing HTML::FromMail * INTRO print <<'REQUIRED'; * First, I will check the sanity of all required modules... sometimes * they do not load, for instance if you have installed a new release * of Perl without upgrading the libraries. REQUIRED my @errors; while(my ($module, $version) = each %prereq) { eval "require $module"; if($@ && $@ =~ m/^Can't locate /) { print " $module is not yet installed\n" } elsif($@) { print " $module produced an error:\n$@"; push @errors, $module; } elsif($module->VERSION < $version) { print " $module version ",$module->VERSION , " is outdated; requires $version\n"; } else { print " $module version ",$module->VERSION , " is ok (required is $version)\n"; } } if($errors) { die <<'FIX'; *** ERROR! You have to install @errors manually, *** before you can retry to install HTML::FromMail. FIX exit 1; } print <<'OPTIONAL'; * Now, let me ask you whether you want some optional modules to be * installed as well. You can always install these modules later, by * hand, without a need to re-install HTML::FromMail. * OPTIONAL foreach my $optional (@optional) { my ($module, $version, %args) = @$optional; my $requirements = $args{requires} || sub {1}; next unless $requirements->(); print "\n"; eval "require $module"; if($@) { print "**** Optional $module failed:\n$@\n"; } elsif($module->VERSION < $version ) { print "**** Optional $module too old: requires $version but is ", $module->VERSION,"\n"; } else { print "**** Found optional $module version ", $module->VERSION, " (required is $version)\n"; next; } my $reason = $args{reason}; $reason =~ s/^/ /gm; $reason =~ s/\A /Use:/; print $reason; if(my $warn = $args{warning}) { $warn =~ s/^/ /gm; $warn =~ s/\A /WARN/; print $warn; } my $install = $default_install_answer; my $key = prompt "Do you want to install $module? yes/no/all", $install; if($key eq 'a') { $default_install_answer = 'a'; $install = 'y'; } else { $install = $key eq 'y' ? 'y' : 'n'; } next unless $install eq 'y'; my $distr = $args{distr} || $module; $prereq{$distr} = $version; print " Added $distr version $version to the requirements\n"; } $prereq{'Bundle::Template::Magic'} = '0' if exists $prereq{'Template::Magic'}; print <<'DONE'; **** Writing Makefile DONE WriteMakefile ( NAME => 'HTML::FromMail' , VERSION => '0.11' , AUTHOR => 'Mark Overmeer' , ABSTRACT => 'Convert E-mail into HTML' , PREREQ_PM => \%prereq ); sub MY::postamble { <<'__POSTAMBLE' } # for OODoc's oodist, DIST RAWDIR = ../public_html/html-from-mail/raw DISTDIR = ../public_html/html-from-mail/source LICENSE = artistic # for OODoc's oodist, POD FIRST_YEAR = 2003,2004,2007 EMAIL = perl@overmeer.net WEBSITE = http://perl.overmeer.net/html-from-mail/ __POSTAMBLE