The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!/usr/bin/perl -w

=head1 NAME

cgiapp-starter - creates a skeleton CGI::Application project

=cut

use warnings;
use strict;

our $VERSION = '0.30';

use Module::Starter qw(
  Module::Starter::Plugin::CGIApp
);

# Provide a sane default
use File::ShareDir qw( dist_dir );
use File::Spec;
if ( !$ENV{MODULE_TEMPLATE_DIR} ) {
    $ENV{MODULE_TEMPLATE_DIR}
      =    ## no critic 'Variables/RequireLocalizedPunctuationVars'
      File::Spec->catdir( dist_dir('Module-Starter-Plugin-CGIApp'), 'default' );
}

use Module::Starter::App;
Module::Starter::App->run;

=head1 SYNOPSIS

 cgiapp-starter --module=MyApp --author="Jaldhar H. Vyas" --email=jaldhar@braincells.com

Result:

    MyApp
    MyApp/Changes
    MyApp/lib
    MyApp/lib/MyApp.pm
    MyApp/LICENSE
    MyApp/Makefile.PL
    MyApp/MANIFEST.SKIP
    MyApp/MANIFEST
    MyApp/README
    MyApp/server.pl
    MyApp/share/templates
    MyApp/share/templates/runmode1.html
    MyApp/t
    MyApp/t/00-signature.t
    MyApp/t/01-load.t
    MyApp/t/boilerplate.t
    MyApp/t/test-app.t
    MyApp/t/www
    MyApp/t/www/PUT.STATIC.CONTENT.HERE
    MyApp/xt
    MyApp/xt/perlcriticrc
    MyApp/xt/perl-critic.t
    MyApp/xt/pod-coverage.t
    MyApp/xt/pod.t

Options:

    --module=module  Module name 
    --dir=dirname    Directory name to create new module in (optional)

    --builder=module Build with 'ExtUtils::MakeMaker' or 'Module::Build'
    --eumm           Same as --builder=ExtUtils::MakeMaker
    --mb             Same as --builder=Module::Build
    --mi             Same as --builder=Module::Install

    --author=name    Author's name (required)
    --email=email    Author's email (required)
    --license=type   License under which the module will be distributed
                     (default is the same license as perl)

    --verbose        Print progress messages while working
    --force          Delete pre-existing files if needed

    --help           Show this message

=head1 DESCRIPTION

Set up the skeleton of a L<CGI::Application|CGI::Application>-based project, including a module,
some templates and some automated tests. 

By default the skeleton files will come within a shared directory
where L<Module::Starter::Plugin::CGIApp|Module::Starter::Plugin::CGIApp> is stored.
See L<File::ShareDir|File::ShareDir> for more information on how this works.

=head1 CONFIGURATION

cgiapp-starter will look for a configuration file before reading its command
line parameters.  The default location is C<$HOME/.module-starter/config> but
if the MODULE_STARTER_DIR environment variable is set, cgiapp-starter will look
for C<config> in that directory.

The configuration file is just a list of names and values, separated by colons.
Values that take lists are just space separated.  A sample configuration file
might read:

 author: Jaldhar H. Vyas
 email: jaldhar@braincells.com
 template_dir: ~/.module-starter/cgiapp/templates
 colors: red green blue

This format may become more elaborate in the future, but a file of this type
should remain valid.

=cut