clean up logging and debug output, minor doc fixes
[catagits/Catalyst-Runtime.git] / script / catalyst.pl
1 #!/usr/bin/perl -w
2
3 use strict;
4 use Getopt::Long;
5 use Pod::Usage;
6 eval 'use Catalyst::Helper "1.0";';
7 die "Please install Catalyst::Helper!\n" if $@;
8
9 my $force    = 0;
10 my $help     = 0;
11 my $makefile = 0;
12 my $scripts  = 0;
13 my $short    = 0;
14
15 GetOptions(
16     'help|?'      => \$help,
17     'force|nonew' => \$force,
18     'makefile'    => \$makefile,
19     'scripts'     => \$scripts,
20     'short'       => \$short
21 );
22
23 pod2usage(1) if ( $help || !$ARGV[0] );
24
25 my $helper = Catalyst::Helper->new(
26     {
27         '.newfiles' => !$force,
28         'makefile'  => $makefile,
29         'scripts'   => $scripts,
30         'short'     => $short,
31     }
32 );
33 pod2usage(1) unless $helper->mk_app( $ARGV[0] );
34
35 1;
36 __END__
37
38 =head1 NAME
39
40 catalyst - Bootstrap a Catalyst application
41
42 =head1 SYNOPSIS
43
44 catalyst.pl [options] application-name
45
46 'catalyst.pl' creates a skeleton for a new application, and allows you to
47 upgrade the skeleton of your old application.
48
49  Options:
50    -force      don't create a .new file where a file to be created exists
51    -help       display this help and exit
52    -makefile   only update Makefile.PL
53    -scripts    only update helper scripts
54    -short      use short names, M/V/C instead of Model/View/Controller.
55
56  application-name must be a valid Perl module name and can include "::", 
57  which will be converted to '-' in the project name.
58
59
60  Examples:
61     catalyst.pl My::App
62     catalyst.pl MyApp
63
64  To upgrade your app to a new version of Catalyst:
65     catalyst.pl -force -scripts MyApp
66
67
68 =head1 DESCRIPTION
69
70 The C<catalyst.pl> script bootstraps a Catalyst application, creating a
71 directory structure populated with skeleton files.  
72
73 The application name must be a valid Perl module name.  The name of the
74 directory created is formed from the application name supplied, with double
75 colons replaced with hyphens (so, for example, the directory for C<My::App> is
76 C<My-App>).
77
78 Using the example application name C<My::App>, the application directory will
79 contain the following items:
80
81 =over 4
82
83 =item README
84
85 a skeleton README file, which you are encouraged to expand on
86
87 =item Changes
88
89 a changes file with an initial entry for the creation of the application
90
91 =item Makefile.PL
92
93 Makefile.PL uses the C<Module::Install> system for packaging and distribution
94 of the application.
95
96 =item lib
97
98 contains the application module (C<My/App.pm>) and
99 subdirectories for model, view, and controller components (C<My/App/M>,
100 C<My/App/V>, and C<My/App/C>).  
101
102 =item root
103
104 root directory for your web document content.  This is left empty.
105
106 =item script
107
108 a directory containing helper scripts:
109
110 =over 4
111
112 =item C<myapp_create.pl>
113
114 helper script to generate new component modules
115
116 =item C<myapp_server.pl>
117
118 runs the generated application within a Catalyst test server, which can be
119 used for testing without resorting to a full-blown web server configuration.
120
121 =item C<myapp_cgi.pl>
122
123 runs the generated application as a CGI script
124
125 =item C<myapp_fastcgi.pl>
126
127 runs the generated application as a FastCGI script
128
129 =item C<myapp_test.pl>
130
131 runs an action of the generated application from the comand line.
132
133 =back
134
135 =item t
136
137 test directory
138
139 =back
140
141
142 The application module generated by the C<catalyst.pl> script is functional,
143 although it reacts to all requests by outputting a friendly welcome screen.
144
145
146 =head1 NOTE
147
148 Neither C<catalyst.pl> nor the generated helper script will overwrite existing
149 files.  In fact the scripts will generate new versions of any existing files,
150 adding the extension C<.new> to the filename.  The C<.new> file is not created
151 if would be identical to the existing file.  
152
153 This means you can re-run the scripts for example to see if newer versions of
154 Catalyst or its plugins generate different code, or to see how you may have
155 changed the generated code (although you do of course have all your code in a
156 version control system anyway, don't you ...).
157
158
159
160 =head1 SEE ALSO
161
162 L<Catalyst::Manual>, L<Catalyst::Manual::Intro>
163
164 =head1 AUTHOR
165
166 Sebastian Riedel, C<sri@oook.de>,
167 Andrew Ford, C<A.Ford@ford-mason.co.uk>
168
169
170 =head1 COPYRIGHT
171
172 Copyright 2004-2005 Sebastian Riedel. All rights reserved.
173
174 This library is free software, you can redistribute it and/or modify it under
175 the same terms as Perl itself.
176
177 =cut