Added -scripts option to catalyst.pl for script updating
[catagits/Catalyst-Runtime.git] / script / catalyst.pl
index 7514e11..6a20cfe 100755 (executable)
@@ -5,15 +5,23 @@ use Getopt::Long;
 use Pod::Usage;
 use Catalyst::Helper;
 
-my $help  = 0;
-my $nonew = 0;
-
-GetOptions( 'help|?' => \$help,
-           'nonew'  => \$nonew );
+my $help    = 0;
+my $nonew   = 0;
+my $scripts = 0;
+my $short   = 0;
+
+GetOptions(
+    'help|?'  => \$help,
+    'nonew'   => \$nonew,
+    'scripts' => \$scripts,
+    'short'   => \$short
+);
 
 pod2usage(1) if ( $help || !$ARGV[0] );
 
-my $helper = Catalyst::Helper->new({'.newfiles' => !$nonew});
+my $helper =
+  Catalyst::Helper->new(
+    { '.newfiles' => !$nonew, 'scripts' => $scripts, 'short' => $short } );
 pod2usage(1) unless $helper->mk_app( $ARGV[0] );
 
 1;
@@ -28,38 +36,130 @@ catalyst - Bootstrap a Catalyst application
 catalyst.pl [options] application-name
 
  Options:
-   -help        display this help and exits
-   -nonew       don't create a .new file where a file to be created exists
+   -help       display this help and exits
+   -nonew      don't create a .new file where a file to be created exists
+   -scripts    update helper scripts only
+   -short      use short types, like C instead of Controller...
 
- application-name has to be a valid Perl module name and can include ::
+ application-name must be a valid Perl module name and can include "::"
 
  Examples:
     catalyst.pl My::App
     catalyst.pl MyApp
 
- See also:
-    perldoc Catalyst::Manual
-    perldoc Catalyst::Manual::Intro
 
 =head1 DESCRIPTION
 
-Bootstrap a Catalyst application.
+The C<catalyst.pl> script bootstraps a Catalyst application, creating a
+directory structure populated with skeleton files.  
+
+The application name must be a valid Perl module name.  The name of the
+directory created is formed from the application name supplied, with double
+colons replaced with hyphens (so, for example, the directory for C<My::App> is
+C<My-App>).
+
+Using the example application name C<My::App>, the application directory will
+contain the following items:
+
+=over 4
+
+=item README
+
+a skeleton README file, which you are encouraged to expand on
+
+=item Build.PL
+
+a C<Module::Build> build script
+
+=item Changes
+
+a changes file with an initial entry for the creation of the application
+
+=item Makefile.PL
+
+an old-style MakeMaker script.  Catalyst uses the C<Module::Build> system so
+this script actually generates a Makeifle that invokes the Build script.
+
+=item lib
+
+contains the application module (C<My/App.pm>) and
+subdirectories for model, view, and controller components (C<My/App/M>,
+C<My/App/V>, and C<My/App/C>).  
+
+=item root
+
+root directory for your web document content.  This is left empty.
+
+=item script
+
+a directory containing helper scripts:
+
+=over 4
+
+=item C<my_app_create.pl>
+
+helper script to generate new component modules
+
+=item C<my_app_server.pl>
+
+runs the generated application within a Catalyst test server, which can be
+used for testing without resorting to a full-blown web server configuration.
+
+=item C<my_app_cgi.pl>
+
+runs the generated application as a CGI script
+
+=item C<my_app_fastcgi.pl>
+
+runs the generated application as a FastCGI script
+
+
+=item C<my_app_test.pl>
+
+runs an action of the generated application from the comand line.
+
+=back
+
+=item t
+
+test directory
+
+=back
+
+
+The application module generated by the C<catalyst.pl> script is functional,
+although it reacts to all requests by outputting a friendly welcome screen.
+
+
+=head1 NOTE
+
+Neither C<catalyst.pl> nor the generated helper script will overwrite existing
+files.  In fact the scripts will generate new versions of any existing files,
+adding the extension C<.new> to the filename.  The C<.new> file is not created
+if would be identical to the existing file.  
+
+This means you can re-run the scripts for example to see if newer versions of
+Catalyst or its plugins generate different code, or to see how you may have
+changed the generated code (although you do of course have all your code in a
+version control system anyway, don't you ...).
+
+
 
 =head1 SEE ALSO
 
-L<Catalyst>, L<Catalyst::Manual>, L<Catalyst::Manual::Intro>,
-L<Catalyst::Test>, L<Catalyst::Request>, L<Catalyst::Response>,
-L<Catalyst::Engine>
+L<Catalyst::Manual>, L<Catalyst::Manual::Intro>
 
 =head1 AUTHOR
 
-Sebastian Riedel, C<sri@oook.de>
+Sebastian Riedel, C<sri@oook.de>,
+Andrew Ford, C<A.Ford@ford-mason.co.uk>
+
 
 =head1 COPYRIGHT
 
-Copyright 2004 Sebastian Riedel. All rights reserved.
+Copyright 2004-2005 Sebastian Riedel. All rights reserved.
 
-This library is free software. You can redistribute it and/or modify it under
-the same terms as perl itself.
+This library is free software, you can redistribute it and/or modify it under
+the same terms as Perl itself.
 
 =cut