use strict;
use ExtUtils::MakeMaker;
use Data::Dumper;
# this is to catch values from previous perl Makefile.PL run
use lib 'testconfig';
# we try to load the previous config values
eval 'use MyConText::TestConfig';
# if we got some values and we are not forced to run the dialog again
# with -s or -setup option, just use those defaults, but say it
if (defined $MyConText::TestConfig::Config{'dsn'}
and not (@ARGV and ($ARGV[0] eq '-s' or $ARGV[0] eq '-setup'))) {
print <<'EOF';
For the test suite, we use the database and user info specified
during the previous run. If you want to change the values, run
perl Makefile.PL -s.
EOF
}
# we will ask the questions
else {
print <<'EOF';
We will ask you for the database info to run the test. To enter
undefined value, accept empty string or say undef.
EOF
if (not defined $MyConText::TestConfig::Config{'dsn'}) {
$MyConText::TestConfig::Config{'dsn'} = 'dbi:mysql:test';
}
$MyConText::TestConfig::Config{'dsn'}
= prompt 'The dsn for tests:', $MyConText::TestConfig::Config{'dsn'};
$MyConText::TestConfig::Config{'user'}
= prompt 'The username:', $MyConText::TestConfig::Config{'user'};
$MyConText::TestConfig::Config{'password'}
= prompt 'The password:', $MyConText::TestConfig::Config{'password'};
for (qw! dsn user password !) {
if ($MyConText::TestConfig::Config{$_} eq ''
or $MyConText::TestConfig::Config{$_} eq 'undef') {
$MyConText::TestConfig::Config{$_} = undef;
}
}
}
# create the testconfig directory for the MyConText::TestConfig.pm file
mkdir 'testconfig', 0700;
mkdir 'testconfig/MyConText', 0700;
# write out the TestConfig file, to be used either for next perl
# Makefile.PL in this session, or (after install) even for further
# versions of this module
open OUT, '> testconfig/MyConText/TestConfig.pm' or die "Error writing the TestConfig\n";
print OUT Data::Dumper->new([ \%MyConText::TestConfig::Config ],
[ '*MyConText::TestConfig::Config' ])->Dump,
"1;\n";
close OUT;
WriteMakefile(
NAME => 'MyConText',
VERSION_FROM => 'MyConText.pm',
PM => { 'MyConText.pm' => '$(INST_LIBDIR)/MyConText.pm',
'String.pm' => '$(INST_LIBDIR)/MyConText/String.pm',
'File.pm' => '$(INST_LIBDIR)/MyConText/File.pm',
'URL.pm' => '$(INST_LIBDIR)/MyConText/URL.pm',
'Blob.pm' => '$(INST_LIBDIR)/MyConText/Blob.pm',
'Column.pm' => '$(INST_LIBDIR)/MyConText/Column.pm',
'Phrase.pm' => '$(INST_LIBDIR)/MyConText/Phrase.pm',
'Table.pm' => '$(INST_LIBDIR)/MyConText/Table.pm',
'testconfig/MyConText/TestConfig.pm' => '$(INST_LIBDIR)/MyConText/TestConfig.pm',
},
MAN1PODS => { 'mycontextadmin' => '$(INST_MAN1DIR)/mycontextadmin.1' },
dist => { COMPRESS => 'gzip -9f', SUFFIX => 'gz',
POSTOP => 'mv $(DISTNAME)-$(VERSION).tar.gz ../' },
macro => { BENCH_FILES => 'bench/*.t' },
depend => { bench => q!pure_all
for i in $(BENCH_FILES) ; do echo $$i ; $(FULLPERL) -I$(INST_ARCHLIB) -I$(INST_LIB) $$i ; done
! },
);