ASP4

 view release on metacpan or  search on metacpan

sbin/asphelper  view on Meta::CPAN

$dbHost ||= "localhost";

if( $dbName && $dbUser )
{
  print STDERR "Enter your database password: ";
  ReadMode('noecho');
  chomp($dbPass = <STDIN>);
  ReadMode('restore');
  print "\n";
}# end if()

my @DSN = (
  "DBI:mysql:$dbName:$dbHost",
  $dbUser,
  $dbPass
);

my $drh = DBI->install_driver("mysql");
my $rc = $drh->func('createdb', $dbName, $dbHost, $dbUser, $dbPass, 'admin');

my $dbh = eval { DBI->connect( @DSN, {RaiseError => 1} ) };
if( $@ )
{
  (my $error = $@) =~ s/\sat\s\Q$0\E\s+line.*//;
  die "[ERROR]: $error\n";
}# end if()

# Setup folder structure:
(my $project_path = lc($appName)) =~ s{::}{_}sg;
make_path($project_path);
chdir($project_path);
my $cwd = cwd();
my $appFolder = join( '/',  split(/::/, $appName) );
make_path("common/lib/$appFolder/db");
make_path("common/sbin");
make_path('www/t/010-basic');
make_path('www/conf');
make_path('www/etc');
make_path('www/htdocs');
make_path('www/handlers');



# Write the ddl.sql file:
unless( -f "common/sbin/ddl.sql" )
{
  warn "common/sbin/ddl.sql\n";
  open my $ofh, '>', "common/sbin/ddl.sql"
    or die "Cannot open 'common/sbin/ddl.sql' for writing: $!";
  print $ofh <<"SQL";

set foreign_key_checks = 0;
drop table if exists asp_sessions;
set foreign_key_checks = 1;

create table asp_sessions (
  session_id   char(32) not null primary key,
  session_data blob,
  created_on   datetime default null,
  modified_on  datetime default null
) engine=innodb charset=utf8;

SQL
  close($ofh);
  open my $ifh, "common/sbin/ddl.sql"
    or die "Cannot open 'common/sbin/ddl.sql' for reading: $!";
  local $/ = ';';
  while( my $cmd = <$ifh> )
  {
    $cmd =~ s/^\s+//s;
    $cmd =~ s/\s+$//s;
    next unless $cmd;
    $dbh->do($cmd);
  }# end while()
  close($ifh);
}# end unless()


# Write our configs:
unless( -f "www/conf/asp4-config.json" )
{
  warn "www/conf/asp4-config.json\n";
  open my $ofh, '>', "www/conf/asp4-config.json"
    or die "Cannot open 'www/conf/asp4-config.json' for writing: $!";
  my $json = generic_config( $dbName && $dbUser );
  $json =~ s/\%CWD\%/$cwd/igs;
  $json =~ s/\%domain\%/$domain/igs;
  $json =~ s/\%appName\%/$appName/igs;
  $json =~ s/\%dbName\%/$dbName/igs;
  $json =~ s/\%dbHost\%/$dbHost/igs;
  $json =~ s/\%dbUser\%/$dbUser/igs;
  $json =~ s/\%dbPass\%/$dbPass/igs;
  $json =~ s/\%email\%/$email/igs;
  print $ofh $json;
  close($ofh);
}# end unless()


unless( -f "www/conf/httpd.conf" )
{
  warn "www/conf/httpd.conf\n";
  open my $ofh, '>', "www/conf/httpd.conf"
    or die "Cannot open 'www/conf/httpd.conf' for writing: $!";
  my $conf = generic_httpconf();
  $conf =~ s/\%CWD\%/$cwd/igs;
  $conf =~ s/\%domain\%/$domain/igs;
  $conf =~ s/\%appName\%/$appName/igs;
  $conf =~ s/\%dbName\%/$dbName/igs;
  $conf =~ s/\%dbHost\%/$dbHost/igs;
  $conf =~ s/\%dbUser\%/$dbUser/igs;
  $conf =~ s/\%dbPass\%/$dbPass/igs;
  $conf =~ s/\%email\%/$email/igs;
  print $ofh $conf;
  close($ofh);
}# end unless()


# Test page:
make_path("www/htdocs");
unless( -f "www/htdocs/index.asp" )
{



( run in 1.477 second using v1.01-cache-2.11-cpan-39bf76dae61 )