Ambrosia
view release on metacpan or search on metacpan
share/Managers/buildConfig.pm view on Meta::CPAN
}->{$dbEngineName} || '';
print "Enter the port for connection to database or enter 's' for use UNIX socket [$dbPort]:";
$dbPort = readln() || $dbPort;
$dbPort = '' if 's' eq lc($dbPort);
### enter user ###
my $dbUser;
print "Enter the username of database [root]:";
$dbUser = readln() || 'root';
### enter password ###
my $dbPassword;
print "Enter user's password []:";
$dbPassword = readln() || '';
### enter password ###
my $dbCharset = lc($charset);
$dbCharset =~ s/[^a-z0-9]//sg;
print "Enter the charset of database [$dbCharset]:";
$dbCharset = readln() || $dbCharset;
### enter password ###
my $dbEngineParams = "database=$dbSchema;host=$dbHost" . ($dbPort ? ";port=$dbPort" : '');
print "Enter the settings for connecting to the database as a string [$dbEngineParams]:";
$dbEngineParams = readln() || 'undef';
### write config to file ###
if ( open(my $fh, '>', $projectName . '.conf') )
{
my $template = join '', <Managers::buildConfig::DATA>;
print $fh proces_template($template,
NAME => $projectName,
TITLE => $projectTitle,
ROOT => $rootPath,
CHARSET => $charset,
SHARE_DIR => Context->repository->get('SHARE_DIR'),
PERL_LIB_PATH => "@perlLibPath",
DOJO_TOOLKIT_PATH => $DojoToolkitPath,
HTTP_SERVER_NAME => $httpServerName,
HTTP_PORT => $httpPort,
DB_ENGINE => $dbEngineName,
DB_SCHEMA => $dbSchema,
DB_HOST => $dbHost,
DB_PORT => ($dbPort ? "port => $dbPort," : ''),
DB_USER => $dbUser,
DB_PASSWORD => $dbPassword,
DB_ENGINE_PARAMS => ($dbEngineParams ? "engine_params => $dbEngineParams," : ''),
DB_CHARSET => $dbCharset,
);
close $fh;
}
my $message = <<MESSAGE;
#######################################################################
#
# Config file "${projectName}.conf" has been created successfully.
#
# Now you can additionally edit ${projectName}.conf and run:
# ambrosia -c ${projectName}.conf -a db2xml
#
#######################################################################
MESSAGE
Context->repository->set( Message => $message );
}
sub proces_template
{
my $template = shift;
my %data = @_;
foreach my $name ( keys %data )
{
my $value = $data{$name} || '';
$template =~ s/##$name##/$value/sg;
}
$template =~ s/##(.*?)##//sg;
return $template;
}
#sub downloadLib
#{
# my $req = HTTP::Request->new(GET => 'http://download.dojotoolkit.org/release-1.7.2/dojo-release-1.7.2.tar.gz');
#}
1;
__DATA__
use strict;
use warnings;
my $ROOT = '##ROOT##';
return
{
#Application name
ID => '##NAME##',
#Application label (title)
Label => '##TITLE##',
#Template charset
Charset => '##CHARSET##',
#The path to templates of Ambrosia Builder
TemplatePath => '##SHARE_DIR##',
#Now only so. Don't edit this.
TemplateStyle => { jsframework => 'dojo', htmltemplate => 'xslt' },
#You must load Dojo Toolkit 1.7.2 from http://download.dojotoolkit.org/release-1.7.2/dojo-release-1.7.2.tar.gz
#and extract it into this directory
DojoToolkitPath => '##DOJO_TOOLKIT_PATH##',
#parameters for project
ServerName => '##HTTP_SERVER_NAME##',
ServerPort => ##HTTP_PORT##,
#The path to the directory where the project will be deployed
ProjectPath => $ROOT . '/##NAME##',
#The path to additional libraries in Perl
PerlLibPath => '##PERL_LIB_PATH##',
ROOT => $ROOT,
DEBUG => 1,
#The path to logfile.
logger_path => $ROOT . '/app_log',
################################################################################
data_source => {
DBI => [
{
engine_name => '##DB_ENGINE##',
source_name => '##NAME##',
catalog => undef,#optional
schema => '##DB_SCHEMA##',
host => '##DB_HOST##',#optional
##DB_PORT##
user => '##DB_USER##',
password => '##DB_PASSWORD##',
##DB_ENGINE_PARAMS##
additional_params => { AutoCommit => 0, RaiseError => 1, LongTruncOk => 1 },
additional_action => sub { my $dbh = shift; $dbh->do('SET NAMES ##DB_CHARSET##')},
},
]
},
data_source_info => {
DBI => { ##NAME## => {charset => '##DB_CHARSET##'} }
},
};
( run in 1.094 second using v1.01-cache-2.11-cpan-97f6503c9c8 )