
Module::Starter - Starter kit for any module

Version 1.22
$Header: /home/cvs/module-starter/Starter.pm,v 1.41 2004/07/12 22:05:59 rjbs Exp $

Nothing in here is meant for public consumption. Use module-starter from the command line.
module-starter --module=Foo::Bar,Foo::Bat \
--author="Andy Lester" --email=andy@petdance.com

create_distro is the only method you should need to use from outside this module; all the other methods are called internally by this one.
This method creates orchestrates all the work; it creates distribution and populates it with the all the requires files.
It takes a hash of params, as follows:
distro => $distroname, # distribution name (defaults to first module)
modules => [ module names ], # modules to create in distro
dir => $dirname, # directory in which to build distro
builder => 'Module::Build', # defaults to ExtUtils::MakeMaker
# or specify more than one builder in an
# arrayref
license => $license, # type of license; defaults to 'perl'
author => $author, # author's full name (required)
email => $email, # author's email address (required)
verbose => $verbose, # bool: print progress messages; defaults to 0
force => $force # bool: overwrite existing files; defaults to 0

All the methods documented below are object methods, meant to be called internally by the ephemperal objects created during the execution of the class method create_distro above.
Creates the base directory for the distribution. If the directory already exists, and $force is true, then the existing directory will get erased.
If the directory can't be created, or re-created, it dies.
This method will create a starter module file for each module named in @modules.
This method returns the text which should serve as the contents for the named module. $rtname is the email suffix which rt.cpan.org will use for bug reports. (This should, and will, be moved out of the parameters for this method eventually.)
This will create the Makefile.PL for the distribution, and will use the module named in $main_module as the main module of the distribution.
This method is called by create_Makefile_PL and returns text used to populate Makefile.PL; $main_pm_file is the filename of the distribution's main module, $main_module.
This will create the Build.PL for the distribution, and will use the module named in $main_module as the main module of the distribution.
This method is called by create_Build_PL and returns text used to populate Build.PL; $main_pm_file is the filename of the distribution's main module, $main_module.
This method creates a skeletal Changes file.
Called by create_Changes, this method returns content for the Changes file.
This method creates the distribution's README file.
Called by create_README, this method returns content for the README file.
This method creates a bunch of *.t files. @modules is a list of all modules in the distribution.
This method is called by create_t, and returns a description of the *.t files to be created.
The return value is a hash of test files to create. Each key is a filename and each value is the contents of that file.
This method creates the distribution's MANIFEST file. It must be run last, because all the other create_* functions have been returning the functions they create.
This method is called by create_MANIFEST, and returns content for the MANIFEST file.
This creates a .cvsignore file in the distribution's directory so that your CVS knows to ignore certain files.
Called by create_cvsignore, this method returns the contents of the cvsignore file.

verbose tells us whether we're in verbose mode.
progress prints the given progress message if we're in verbose mode.

Please report any bugs or feature requests to bug-module-starter@rt.cpan.org, or through the web interface at http://rt.cpan.org. I will be notified, and then you'll automatically be notified of progress on your bug as I make changes.

Andy Lester, <andy@petdance.com>

Copyright 2004 Andy Lester, All Rights Reserved.
This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
Please note that these modules are not products of or supported by the employers of the various contributors to the code.