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