NAME
Bigtop - A Web Application Data Language processor
SYNOPSIS
The real synopsis:
vi your_app.bigtop
bigtop --create your_app.bigtop all
Modify your bigtop file and try again:
bigtop your_app.bigtop all
See Bigtop::Docs::Tutorial for a guide to Bigtop syntax.
DESCRIPTION
Bigtop is a language for describing the data of a web application. Usually this data will be stored in a relational database. Once you have a description of your data, you can generate a web application from it. This includes all the pieces you need like: the sql statements ready for feeding to your database command line tool, the httpd.conf you need to Include in the httpd.conf on your system, the modules that will handle the web requests, the models that make the database tables look like classes, etc.
If you need to alter the data model in the future, you can change your original description to match the new reality, then regenerate the application without fear of losing hand written code (though you may have to modify some of it to reflect the new reality).
FUNCTIONS
This module is really a place holder, but it does provide some developer routines (which are not exported):
- write_file
-
use Bigtop; Bigtop::write_file( $file_name, $file_content, $no_overwrite )
This attempts to write $file_content to $file_name and dies on failures of open or close. Further, if you pass a true no_overwrite flag, it will check to see if the file exists and refuse to overwrite it. In that case, the user gets a warning that the file has been skipped because it already exists.
Since write_file dies on failures, you should wrap it in an eval if you don't want its errors to be fatal.
You may also say no warnings in the eval block to prevent skipped messages when you ask for no overwrite.
- make_module_path
-
(Note that make_module_path uses File::Spec, so even though Unix directory syntax is shown below, the function should work in other places.)
use Bigtop; Bigtop::make_module_path( $build_dir, $module_name );
This attempts to make all the directories from $build_dir to the home of the module. It assumes that lib comes immediately after $build_dir.
For example, a call like:
Bigtop::make_module_path( '/home/username/App-Name', 'App::Name::Subname' );
Attempts to make these directories:
/home/username/App-Name/lib /home/username/App-Name/lib/App /home/username/App-Name/lib/App/Name /home/username/App-Name/lib/App/Name/Subname
It doesn't report failures. Making directories can fail because the directories already exist (in which case you probably don't care) or because they could not be written (in which case you'll notice soon enough, when you try to write to them).
EXPORT
None.
SEE ALSO
The work of Bigtop is handled by its pieces:
Bigtop::Parser
Bigtop::Init
Bigtop::Init::Std
Bigtop::SQL
Bigtop::SQL::Postgres
Bigtop::CGI
Bigtop::CGI::Gantry
Bigtop::Control
Bigtop::Control::Gantry
Bigtop::HttpdConf
Bigtop::HttpdConf::Gantry
Bigtop::Model
Bigtop::Model::GantryCDBI
Bigtop::Model::Gantry
Bigtop::SiteLook::GantryDefault
The backends come in types. Ideally, these types all share a set of keywords which are defined in the type's module. So Bigtop::SQL
is meant to define the KEYWORDS that all Bigtop::SQL::* modules use. They may define others, but only if they are specific to the generated target. For example, there might be some Postgres specific keyword which doesn't apply to other databases. It should be defined in Bigtop::SQL::Postgres. (But currently only on Bigtop::Control::Gantry, of the backend implementations, actually defines target specifc keywords).
AUTHOR
Phil Crow, <philcrow2000@yahoo.com>
COPYRIGHT AND LICENSE
Copyright (C) 2005-6, Phil Crow
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself, either Perl version 5.8.6 or, at your option, any later version of Perl 5 you may have available.