Ambrosia

 view release on metacpan or  search on metacpan

script/ambrosia  view on Meta::CPAN

#!/usr/local/bin/perl -w

use strict;
use warnings;

################################################################################
#   INIT
################################################################################
our $VERSION = 0.010;

our $dispatcher;
our $action;
use Data::Dumper;

our $dist_dir;
our $share_dir;
BEGIN
{
    use File::ShareDir 'dist_dir';
    eval
    {
        $dist_dir = dist_dir('Ambrosia');
        $share_dir = $dist_dir;
    };
    if ($@)
    {
        use FindBin;
        if ( -d "$FindBin::Bin/../lib/perl5" )
        {
            $dist_dir = $FindBin::Bin . '/../lib/perl5';
            $share_dir = $dist_dir . '/share/Ambrosia';
        }
        else
        {
            $dist_dir = $FindBin::Bin . '/../lib';
            $share_dir = $FindBin::Bin . '/../share';
        }
    }
}

use lib $dist_dir;
use lib $share_dir;

BEGIN
{
    use XML::LibXML;

    use Ambrosia::core::Nil;
    use Ambrosia::Config;
    use Ambrosia::Context;
    use Ambrosia::DataProvider;

    use Cwd;
    my $cwd = cwd();

    my %optionsConfig = (
        engine_name => 'Options',
        engine_params => {
                options_spec => [
                    'ambrosia %o',
                    [ 'data|d=s',         'the path to xml' ],
                    [ 'config_path|c=s',  'the path to config' ],
                    [ 'install_path|p=s', 'the path where project building' ],
                    [ 'action|a=s',       "what to do:\n\t\configure - create config;\n\t\tdb2xml - make xml from data base structure;\n\t\txml2app - make schema of application" ],
                    [ 'help',             'print usage message and exit' ],
                ]
            }
    );

    instance Ambrosia::Context(%optionsConfig);

    my $config_path = Context->param('config_path') || $cwd . '/ambrosia.conf';
    if (-f $config_path )
    {
        instance Ambrosia::Config(AmbrosiaBuilder => $config_path);
        Ambrosia::Config::assign('AmbrosiaBuilder');
        instance Ambrosia::DataProvider(AmbrosiaBuilder => config()->data_source);
        Ambrosia::DataProvider::assign('AmbrosiaBuilder');
    }
    else
    {
        $action = 'configure';
        instance Ambrosia::DataProvider(AmbrosiaBuilder => new Ambrosia::core::Nil);
        Ambrosia::DataProvider::assign('AmbrosiaBuilder');
    }

    use Ambrosia::Logger;
    #instance Ambrosia::Logger('AmbrosiaBuilder', DEBUG => 1, INFO_EX => 1, INFO => 1, -prefix => 'abuilder_', -dir => config->logger_path);
    instance Ambrosia::Logger('AmbrosiaBuilder');
    Ambrosia::Logger::assign('AmbrosiaBuilder');

    use Ambrosia::Dispatcher;
    use Ambrosia::View::XSLT;
    use Ambrosia::BaseManager;

    my $MANAGERS = {
            db2xml => {
                manager => 'Managers::buildXml',
                template => '/Templates/db2xml.xsl'
            },
            xml2app => {
                manager => 'Managers::buildApp',



( run in 0.957 second using v1.01-cache-2.11-cpan-5a3173703d6 )