MKDoc-Core
view release on metacpan or search on metacpan
lib/MKDoc/Setup/Core.pm view on Meta::CPAN
sub keys { qw /MKDOC_DIR/ }
sub label
{
my $self = shift;
$_ = shift;
/MKDOC_DIR/ and return "MKDoc Directory";
return;
}
sub initialize
{
my $self = shift;
$self->{MKDOC_DIR} = $::MKDOC_DIR || $ENV{MKDOC_DIR} || '/usr/local/mkdoc';
}
sub validate
{
my $self = shift;
my $cur_dir = $self->{MKDOC_DIR};
$cur_dir = File::Spec->rel2abs ($cur_dir);
$cur_dir =~ s/\/$//;
-d $cur_dir or mkdir $cur_dir or do {
print "Impossible to create $cur_dir";
return 0;
};
-d "$cur_dir/conf" or mkdir "$cur_dir/conf" or do {
print "Impossible to create $cur_dir/conf";
return 0;
};
$self->{MKDOC_DIR} = $cur_dir;
return 1;
}
sub install
{
my $self = shift;
my $cur_dir = $self->{MKDOC_DIR};
$cur_dir = File::Spec->rel2abs ($cur_dir);
$cur_dir =~ s/\/$//;
-d $cur_dir or do { mkdir $cur_dir || die "Cannot create $cur_dir. Reason: $!" };
-d "$cur_dir/conf" or do { mkdir "$cur_dir/conf" || die "Cannot create $cur_dir. Reason: $!" };
-d "$cur_dir/cgi" or do { mkdir "$cur_dir/cgi" || die "Cannot create $cur_dir. Reason: $!" };
chmod 0755, $cur_dir, "$cur_dir/conf", "$cur_dir/cgi";
print "\n\n";
$self->install_mksetenv();
$self->install_httpd_conf();
$self->install_mkdoc_cgi();
$self->install_success();
exit (0);
}
sub install_mksetenv
{
my $self = shift;
my $cur_dir = $self->{MKDOC_DIR};
open FP, ">$cur_dir/mksetenv.sh" || die "Cannot create '$cur_dir/mksetenv.sh'";
print FP join "\n", (
qq |export MKDOC_DIR="$cur_dir"|,
);
print FP "\n";
close FP;
chmod 0644, "$cur_dir/mksetenv.sh";
}
sub install_httpd_conf
{
my $self = shift;
my $cur_dir = $self->{MKDOC_DIR};
open FP, ">>$cur_dir/conf/httpd.conf" || die "Cannot touch $cur_dir/conf/httpd.conf. Reason: $!";
print FP '';
close FP;
chmod 0644, "$cur_dir/conf/httpd.conf";
}
sub install_mkdoc_cgi
{
my $self = shift;
my $cur_dir = $self->{MKDOC_DIR};
open FP, ">$cur_dir/cgi/mkdoc.cgi";
print FP join '', <DATA>;
close FP;
chmod 0755, "$cur_dir/cgi/mkdoc.cgi";
}
sub install_success
{
my $self = shift;
my $cur_dir = $self->{MKDOC_DIR};
print "Successfully created $cur_dir/mksetenv.sh\n\n";
print "At this point you probably should add the following in your Apache httpd.conf file:\n\n";
print "# Include all MKDoc sites\n";
print "Include $cur_dir/conf/httpd.conf\n\n";
}
1;
__DATA__
#!/usr/bin/perl
use MKDoc::Core;
use Data::Dumper;
use strict;
use warnings;
eval { MKDoc::Core->process() };
if (defined $@ and $@)
{
print "Status: 500 Internal Server Error\n";
print "Content-Type: text/html; charset=UTF-8\n\n";
if (ref $@) { $@ = Dumper ($@) }
$@ = Dumper (\%ENV) . "\n\n" . $@;
warn "SOFTWARE_ERROR\n\n" . $@ . "\n\n";
}
BEGIN {
$SIG{'__WARN__'} = sub {
# trap some common error strings that otherwise flood the error log files
warn $_[0] unless ($_[0] =~ /byte of utf8 encoded char at/ or
$_[0] =~ /is deprecated/ or
$_[0] =~ /IMAPClient\.pm line/);
}
}
( run in 1.723 second using v1.01-cache-2.11-cpan-5b529ec07f3 )