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